2014-03-24 76 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