2014-03-24 77 views
0

我知道還有其他關於重命名的問題,我看了一堆,但我的代碼不起作用。我也看到了OS的python定義。簡單重命名文件保留前綴的腳本

基本上我的代碼將會是GIS中一個更​​大腳本的一部分,我將運行它。我已經創建了名爲permits.gdb的地理數據庫,並對數據運行了所有必要的處理,然後我想將其重命名爲備份目的。

我得到錯誤,該文件無法找到......我只是在C:\ test \ licenses.gdb中創建它,所以我知道它存在....我已經看到了幾個路徑示例, 」,/和\,但沒有似乎工作的路徑,甚至問題

import time 
import os 

dir_path = os.path.normpath('C:/test') 
dir = os.listdir(dir_path) 
now = time.strftime('%H%M%A%d%m%Y') 

for filename in dir: 
    old_name = "permits.gdb" 
    new_name = "BAQP_Permits_"+ now +".gdb" 
    os.rename(old_name, new_name) 

更新:?! 我感謝你們這麼多的幫助,我得到它的工作,但它仍然拋出錯誤的是它找不到指定的文件,即使它真的在重命名它,我現在也將它保存在我想要的位置,並將其與我的腳本的其餘部分結合起來(因此文件路徑現在不同)是我的新代碼:

dir_path = os.path.normpath('L:\GIS_Admin\SDE_Update_Backup\BAQP_Permits') 
dir = os.listdir(dir_path) 
now = time.strftime('%H%M%A%d%m%Y') 

for filename in dir: 
    old_name = dir_path + "\BAQP_Permits.gdb" 
    new_name = dir_path + "\BAQP_Permits_"+ now +".gdb" 
    os.rename(old_name, new_name) 

和我的錯誤:

Traceback (most recent call last): 
File "C:\NDEPGIS\Scripts\baqp_permits_aris_daily", line 28, in <module> 
os.rename(old_name, new_name) 
WindowsError: [Error 2] The system cannot find the file specified 

回答

0

西蒙得到我所需要的代碼,但我有這樣的錯誤我是用暫時無法找到該文件,即使文件被更改獲取和它打印我的結果的兩倍。它在沒有退出的情況下循環播放!

dir_path = os.path.normpath('C:\NDEPGIS\Scripts\SDE_Update_Backup\BAQP_Permits') 
dir = os.listdir(dir_path) 
now = time.strftime('%H%M%A%d%m%Y') 

for filename in dir: 
    old_name = dir_path + "/BAQP_Permits.gdb" 
    new_name = dir_path + "/BAQP_Permits_"+ now +".gdb" 
    print "filename", filename 
    print "old:", old_name 
    print "new:", new_name 
    os.rename(old_name, new_name) 
    break 
print "all done!" 
0

試試這個:

import time 
import os 

dir_path = os.path.normpath('C:/test') 
dir = os.listdir(dir_path) 
now = time.strftime('%H%M%A%d%m%Y') 

for filename in dir: 
    old_name = dir_path + "/permits.gdb" 
    new_name = dir_path + "/BAQP_Permits_"+ now +".gdb" 
    print "filename", filename 
    print "old:", old_name 
    print "new:", new_name 
    os.rename(old_name, new_name) 

我不認爲文件名包括完整路徑。

+0

我的錯誤:回溯(最近通話最後一個): 文件 「C:/測試/ date_test」,第11行,在 os.rename(舊名稱,new_name的) WindowsError:[錯誤2]系統找不到指定的文件 – user3161018

+0

您是否嘗試過我的代碼?用打印語句運行它。通過在控制檯中粘貼路徑來驗證old_name文件是否存在。 – Simon

+0

確定您的代碼中的文件名與我所用的不同,修復了這個問題。它的工作,但我仍然得到一個錯誤,儘管它找到該文件,實際上改變文件...這裏是它打印:文件名BAQP_Permits.gdb 舊:C:\測試\ BAQP_Permits.gdb 新:C:\測試\ BAQP_Permits_1031Tuesday08042014.gdb 名date_test 老:C:\測試\ BAQP_Permits.gdb 新:C:\測試\ BAQP_Permits_1031Tuesday08042014.gdb 回溯(最近通話最後一個): 文件 「C:/測試/ date_test3」第14行 os.rename(old_name,new_name) WindowsError:[錯誤2]系統找不到指定的文件 – user3161018

0

只有第7,8行與Simon的代碼不同。 我認爲你的數據的完整路徑是「C:/test/date_test/permits.gdb」,你的代碼中的'old_name'是'permit.gdb',在Simon的代碼中是'C:/test/permits.gdb' ,所以你應該添加dir到'old_name'和'new_name'。

 

    import time 
    import os 
    dir_path = os.path.normpath('C:/test') 
    dir = os.listdir(dir_path) 
    now = time.strftime('%H%M%A%d%m%Y') 
    for filename in dir: 
     old_name = dir_path + '/' + dir + "/permits.gdb" 
     new_name = dir_path + '/' + dir + "/BAQP_Permits_"+ now +".gdb" 
     print "filename", filename 
     print "old:", old_name 
     print "new:", new_name 
     os.rename(old_name, new_name) 

+0

我得到:Traceback(最近調用最後一個): 文件「C:/ test/date_test2」 ,第7行, old_name = dir_path +'/'+ dir +「/許可。gdb「 TypeError:無法連接'str'和'list'對象 – user3161018

+0

對不起,有錯誤,用'filename'替換'dir'。'dir'是一個列表,而不是字符串。 – lix