2017-03-01 141 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') 

乾杯。