我的目标是让 python 使用 telegram-upload 按升序将文件从设置的目录上传到 telegram。我的脚本似乎无法按顺序上传。它以随机顺序上传文件。我用过sorted
功能无济于事。查看我的脚本,您可以看到我尝试过的一些事情(评论)。我有一个设置sorted
这将按顺序列出文件,但是在尝试上传时,我无法重新转换我创建并排序回字符串的列表,因此subprocess
可以读取参数。
这是脚本:
import os
import subprocess
import time
#import shutil
Number_Of_Files = 0
#PATH = r'C:\Users\myuser\Downloads'
PATH = '/home/pi/Public/'
for root, subFolder, files in os.walk(PATH):
for item in files:
#Number_Of_Files=Number_Of_Files+1
fileNamePath = os.path.join(root, item)
#sorted = sorted(fileNamePath)
#subprocess.run(['telegram-upload', '-f', 'my_channel', str(sorted)])
subprocess.run(['telegram-upload', '-f', 'my_channel', str(fileNamePath)])
#os.remove(fileNamePath)
print(fileNamePath)
#time.sleep(60)
#else:
#print(Number_Of_Files)
sorted
工作不到位。这subFolder
争论must如果您想将更改传播回,请就地排序os.walk
。如果你想使用files
直接,你也需要就地排序。否则,您需要使用排序版本:
for root, subFolder, files in os.walk(PATH):
files.sort() # This sorts in-place
subFolder.sort() # If you want sorted directories
for item in files:
fileNamePath = os.path.join(root, item)
subprocess.run(['telegram-upload', '-f', 'my_channel', fileNamePath])
如果你不想对两个列表进行就地排序,你可以这样写:
for root, subFolder, files in os.walk(PATH):
subFolder[:] = sorted(subFolder) # creates a new list and assigns back to the original
for item in sorted(files):
fileNamePath = os.path.join(root, item)
subprocess.run(['telegram-upload', '-f', 'my_channel', fileNamePath])
跑是没有意义的sorted
在你的循环内。自从sorted
每次都会创建一个新列表,并且循环会覆盖原始列表files
列表,您的电话sorted
没有效果。您通常希望在循环序列之前应用排序,如我上面所示。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)