【发布时间】:2014-06-26 16:30:12
【问题描述】:
我知道这对你们中的许多人来说会很容易令人沮丧。我刚开始学习 Python,需要一些基本文件处理方面的帮助。
我拍摄了很多屏幕截图,最终出现在我的桌面上(因为这是默认设置)。我知道我可以更改屏幕截图设置以自动将其保存在其他位置。但是,我认为这个程序将是教我如何对文件进行排序的好方法。我想使用 python 自动对桌面上的所有文件进行排序,识别以 .png 结尾的文件(屏幕截图的默认文件类型),然后简单地将其移动到我命名为“存档”的文件夹中。
这是我目前得到的:
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)
我已经玩了很多,但无济于事。在这个最新版本中,我在运行程序时遇到以下错误:
Traceback(最近一次调用最后一次): 文件“pngmove_2.0.py”,第 23 行,在 shutil.move(源,目的地) 文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py”,第 290 行,在移动中 TypeError:强制转换为 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”。 但是,它会移动文件夹中的所有文件,而不是移动以“.png”结尾的文件。
【问题讨论】:
-
看到你的来源是一个列表。包含许多文件,您必须移动源+文件,目标+文件
-
你的移动总源文件夹。只需要移动文件
-
答案是否解决了你的问题
-
嘿,你理解错了,检查一下我更新了
-
检查更新。它可以在我的系统中正常工作
标签: python python-2.7 file-io