首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python重命名和移动文件

用Python重命名和移动文件
EN

Stack Overflow用户
提问于 2017-03-01 20:47:41
回答 5查看 84.2K关注 0票数 32

我有一个Python脚本,它将文件夹中的现有文件名与引用表进行比较,然后确定它是否需要重命名。

当它遍历每个文件名时:

代码语言:javascript
复制
'oldname' = the current file name

'newname' = what it needs to be renamed to

我要重命名该文件,并将其移动到一个新文件夹"..\renamedfiles“。

我可以在重命名和移动的同时在循环中迭代吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-03-01 20:57:26

如果源和目标位置位于不同的分区/驱动器/设备上,os.rename (和os.replace)将无法工作。如果是这样的话,您需要使用shutil.move (如果可能的话,它将使用原子重命名),如果目标不在同一个文件系统上,则回退到复制-然后删除。在相同的操作中移动和重命名是非常高兴的;不管操作是相同的。

票数 23
EN

Stack Overflow用户

发布于 2017-03-01 21:15:38

是的你能做到的。在Python中,您可以在move库中使用舒蒂尔函数来实现这一点。

假设在Linux上,/home/user/Downloads文件夹中有一个名为"test.txt“的文件,您希望将其移动到/home/user/Documents,并将名称更改为"useful_name.txt”。您可以在相同的代码行中完成这两件事:

代码语言:javascript
复制
import shutil

shutil.move('/home/user/Downloads/test.txt', '/home/user/Documents/useful_name.txt')

在您的情况下,您可以这样做:

代码语言:javascript
复制
import shutil

shutil.move('oldname', 'renamedfiles/newname')
票数 41
EN

Stack Overflow用户

发布于 2017-03-01 20:57:17

要同时执行这两个操作,可以使用os.rename(src, dest)函数。

您应该有想要的目录来保存文件和新的文件名。您可以对在循环中运行的每个文件执行此操作。

例如,

代码语言:javascript
复制
# In Windows
dest_dir = "tmp\\2"
new_name = "bar.txt"
current_file_name = "tmp\\1\\foo.txt"
os.rename(current_file_name, os.path.join(dest_dir, new_name))

rename函数允许您同时更改文件及其文件夹的名称。

若要防止重命名和移动文件时出现任何错误,请使用shutil.move

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42541748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档