在脚本中保存前缀的文件的简单重命名

时间:2014-03-24 22:33:39

标签: datetime file-rename arcpy

我知道还有其他关于重命名的问题,我看了一堆,但我的代码没有工作。我也看过OS python的定义。

基本上我的代码将成为我将运行的GIS中较大脚本的一部分。我已经创建了一个名为permits.gdb的地理数据库并对数据运行所有必要的处理,然后我想用它上面的时间戳重命名它以备份。

我收到的错误是文件无法找到...我只是在C:\ test \ permits.gdb中创建它所以我知道它存在....我已经看过几个路径示例& #34;,',/和\,但似乎没有工作。路径甚至是问题吗?

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 

3 个答案:

答案 0 :(得分: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)

我认为文件名不包含完整路径。

答案 1 :(得分:0)

只有第7,8行与Simon的代码不同。 我认为数据的完整路径是&#34; C:/test/date_test/permits.gdb",&#39; old_name&#39;在您的代码中是&#39; permits.gdb&#39;,在Simon的代码中是&#39; C:/test/permits.gdb',因此您应该将dir添加到&#39; old_name& #39;和&#39; new_name&#39;。


    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)

答案 2 :(得分:0)

Simon给我提供了我需要的代码,但是我遇到了错误,即使文件已更改并且打印结果两次,我也无法找到该文件。它没有出口就循环了!

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!"