2017-03-01 148 views
2

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

由于它遍历每个文件名:

'oldname' = the current file name 

'newname' = what it needs to be renamed to 

我想重命名文件并将其移动到一个新的文件夹“.. \ renamedfiles”

我可以做重命名,并在移动它通过循环迭代的同时?

更新: 道歉,我相当绿色与scrpting一般,但这似乎是非常基本的。 shutil.move正是我所需要的感谢 - 我只是不知道寻找它。下面的成功测试。现在将其加入到脚本中。

import shutil 
os.chdir ('C:\Users\me\Desktop\New folder') 
renFolder= 'Renamed' 
oldname = 'Test.txt' 
newname= 'renTest.txt' 
shutil.move(oldname, renFolder+'/'+newname) 
+1

向我们展示您的循环代码 - 您尝试解决它。 –

+0

重命名和移动文件是一回事。 – jwodder

+0

使用['os。重命名'](https://docs.python.org/2/library/os.html#os.rename)和['shutil.move'](https://docs.python.org/2/library/shutil .html#shutil.move) – inspectorG4dget

回答

4

os.rename(和os.replace)如果源位置和目标位置位于不同的分区/驱动器/设备上将不起作用。如果是这种情况,则需要use shutil.move,如果可能的话,将使用原子重命名,如果目标不在同一个文件系统上,则后备将复制 - 然后删除。在同一个操作中移动和重命名都非常开心;不管怎样,操作都是一样的。

0

在你想要的目录中创建一个Python文件,写这样的事情:

import os 

for filename in os.listdir("."): 
    if(filename ...): 
     newFilename = ... 
     os.rename(filename, newFilename) 
0

两者都做的操作,您可以使用os.rename(src, dest)功能。

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

例如:

dest_dir = "/tmp/2" 
new_name = "bar.txt" 
current_file_name = "/tmp/1/foo.txt" 
os.rename(current_file_name, dest_dir+"/"+new_name) 

rename功能允许您更改文件的名称和它在同一时间的文件夹。

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

+0

我因为推荐了一个现有的_deletes_文件原语而降低了投票率。否则我就不会在意了。 downvote删除。你诚实的错误可能会诚实地造成伤害 –

+0

@ Jean-FrançoisFabre我知道,并不意味着。感谢那! –

+0

我认为你的子目标让你把'os.rename'和'shutil.move'混合在一起,并给出了'os.remove' :) –

2

是的,你可以做到这一点。在Python中你可以使用移动函数在 shutil库实现这个。

比方说在Linux上,你必须在/ home /用户/下载名为的test.txt文件夹一个文件,你想将它移动到/ home /用户/文件,改变它的名字useful_name.txt。你可以这样做:

import shutil 

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

在你的情况,你可以这样做:

import shutil 

shutil.move('oldname', 'renamedfiles/newname') 

干杯。