shutil.copy2() 文件大小不匹配
shutil.copy2() file size doesn't match
设置:Synology with Docker 运行 Home-Assistant with HACS integration and pyscript.
我做了以下两个功能:
@service
def getListOfFiles(dirName):
import os
# create a list of file and sub directories
# names in the given directory
listOfFile = os.listdir(dirName)
allFiles = list()
# Iterate over all the entries
for entry in listOfFile:
# Create full path
fullPath = os.path.join(dirName, entry)
# If entry is a directory then get the list of files in this directory
if os.path.isdir(fullPath):
allFiles = allFiles + getListOfFiles(fullPath)
else:
if fullPath.endswith('jpg'):
allFiles.append(fullPath)
elif fullPath.endswith('jpeg'):
allFiles.append(fullPath)
elif fullPath.endswith('png'):
allFiles.append(fullPath)
return allFiles
@service
def slideshow():
import random
import os
import shutil
path = '/Slideshow'
listOfFiles = getListOfFiles(path)
random_image = random.choice([x for x in listOfFiles])
image_path = '{}'.format(random_image)
shutil.copy2(image_path, '/config/www/slide.jpg')
现在一切正常,但目标文件 (slide.jpg) 的大小始终不正确。它在 10kB - 1000kB 之间变化,而原始图像通常在 7-10 MB 之间。
有什么建议吗?
运行 Mac 上的相同代码(当然具有不同的源和目标)完美运行。
使用 .copyfile 和 .copy 的结果相同
所以经过大量的挖掘,发现了问题。 Synology 创建了一个目录:/@eaDir/
为每个在 S、M、L 中带有缩略图的文件创建了一个目录,这被证明是根本原因。这(有时)是正在传输的文件而不是假定的图像,因此尺寸较小。
设置:Synology with Docker 运行 Home-Assistant with HACS integration and pyscript.
我做了以下两个功能:
@service
def getListOfFiles(dirName):
import os
# create a list of file and sub directories
# names in the given directory
listOfFile = os.listdir(dirName)
allFiles = list()
# Iterate over all the entries
for entry in listOfFile:
# Create full path
fullPath = os.path.join(dirName, entry)
# If entry is a directory then get the list of files in this directory
if os.path.isdir(fullPath):
allFiles = allFiles + getListOfFiles(fullPath)
else:
if fullPath.endswith('jpg'):
allFiles.append(fullPath)
elif fullPath.endswith('jpeg'):
allFiles.append(fullPath)
elif fullPath.endswith('png'):
allFiles.append(fullPath)
return allFiles
@service
def slideshow():
import random
import os
import shutil
path = '/Slideshow'
listOfFiles = getListOfFiles(path)
random_image = random.choice([x for x in listOfFiles])
image_path = '{}'.format(random_image)
shutil.copy2(image_path, '/config/www/slide.jpg')
现在一切正常,但目标文件 (slide.jpg) 的大小始终不正确。它在 10kB - 1000kB 之间变化,而原始图像通常在 7-10 MB 之间。
有什么建议吗?
运行 Mac 上的相同代码(当然具有不同的源和目标)完美运行。
使用 .copyfile 和 .copy 的结果相同
所以经过大量的挖掘,发现了问题。 Synology 创建了一个目录:/@eaDir/
为每个在 S、M、L 中带有缩略图的文件创建了一个目录,这被证明是根本原因。这(有时)是正在传输的文件而不是假定的图像,因此尺寸较小。