我知道这对你们中的许多人来说会非常容易。我刚刚开始学习 Python,需要一些基本文件处理方面的帮助。
我拍摄了很多屏幕截图,最终出现在我的桌面上(因为这是默认设置)。我知道我可以更改屏幕截图设置以自动将其保存在其他位置。不过,我认为这个程序将是教我如何对文件进行排序的好方法。我想使用 python 自动对桌面上的所有文件进行排序,识别以 .png(屏幕截图的默认文件类型)结尾的文件,然后将其移动到我命名为“Archive”的文件夹中。
这是我到目前为止所得到的:
import os
import shutil
source = os.listdir('/Users/kevinconnell/Desktop/Test_Folder/')
destination = 'Archive'
for files in source:
if files.endswith('.png'):
shutil.move(source, destination)
我已经玩了很多次了,但没有成功。在这个最新版本中,我在运行程序时遇到以下错误:
回溯(最近一次调用最后一次):
文件“pngmove_2.0.py”,第 23 行,位于
Shutil.move(源,目的地)
文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py”,第 290 行,移动中
类型错误:强制转换为 Unicode:需要字符串或缓冲区,已找到列表
我的印象是,我对源和目标所需的正确约定/语法存在某种问题。但是,到目前为止,我无法找到有关如何修复它的太多帮助。我使用 os.path.abspath() 来确定您在上面看到的文件路径。
预先感谢您为保持我的理智提供的任何帮助。
最新更新
我相信我已经非常接近查明真相了。我确信如果我继续玩它,我会弄清楚的。只是为了让所有帮助我的人都更新......
这是我正在使用的当前代码:
import os
import shutil
sourcepath ='/Users/kevinconnell/Desktop/'
source = os.listdir(sourcepath)
destinationpath = '/Users/kevinconnell/Desktop/'
for files in source:
if files.endswith('.png'):
shutil.move(os.path.join(sourcepath,'Test_Folder'), os.path.join(destinationpath,'Archive'))
这适用于将我的“Test_Folder”文件夹重命名为“Archive”。However,它会移动文件夹中的所有文件,而不是移动以“.png”结尾的文件。