Python 使用不断更改的名称重命名目录

Python 使用不断更改的名称重命名目录,python,arcpy,Python,Arcpy,我创建了一个脚本,应该下载一些数据,然后运行一些进程。数据源(ArcGIS Online)始终以zip文件的形式下载数据,提取时,文件夹名称将是一系列字母和数字。我注意到这些情况偶尔会发生变化(不完全确定原因)。我的想法是运行os.listdir来获取文件夹名,然后重命名它。我遇到的问题是,列表返回带有括号和引号的文件夹名称。它以['F29A52B8908242F5B1F1F32C58B74C063B.gdb']作为文件夹名返回,而文件资源管理器中的文件夹没有括号和引号。下面是我的代码和收到的错

我创建了一个脚本,应该下载一些数据,然后运行一些进程。数据源(ArcGIS Online)始终以zip文件的形式下载数据,提取时,文件夹名称将是一系列字母和数字。我注意到这些情况偶尔会发生变化(不完全确定原因)。我的想法是运行os.listdir来获取文件夹名,然后重命名它。我遇到的问题是,列表返回带有括号和引号的文件夹名称。它以['F29A52B8908242F5B1F1F32C58B74C063B.gdb']作为文件夹名返回,而文件资源管理器中的文件夹没有括号和引号。下面是我的代码和收到的错误

from zipfile import ZipFile

file_name = "THDNuclearFacilitiesBaseSandboxData.zip"

with ZipFile(file_name) as zip:
    # unzipping all the files
    print("Unzipping "+ file_name)
    zip.extractall("C:/NAPSG/PROJECTS/DHS/THD_Nuclear_Facilities/SCRIPT/CountyDownload/Data")

    print('Unzip Complete')

#removes old zip file
os.remove(file_name)


x = os.listdir("C:/NAPSG/PROJECTS/DHS/THD_Nuclear_Facilities/SCRIPT/CountyDownload/Data")
os.renames(str(x), "Test.gdb")
输出:

FileNotFoundError:[WinError 2]系统找不到指定的文件:['F29A52B8908242F5B1F32C5B74C063B.gdb']->'Test.gdb'


我对python脚本比较陌生,所以如果有更简单的替代方法,那也很好。谢谢

方括号表示列表。试试x[0],它应该去掉括号,只作为数据。
listdir返回的值可能是一个只有一个值的列表,也可能是一整串值的列表,方括号表示列表。试试x[0],它应该去掉括号,只作为数据。 listdir()返回的列表可以是只有一个值的列表,也可以是一整串值的列表。listdir()返回文件夹中的文件/对象列表

列表
在打印到屏幕上时,使用一组括号表示。 每个文件的名称都是由字符组成的
字符串
字符串
在打印到屏幕上时使用引号表示

因此,我们看到了一个带有单个文件名的
列表

['f29a52b8908242f5b1f32c58b74c063b.gdb']
要使用Python访问
列表
中的项目,可以使用索引表示法(恰好也使用括号通过引用项目的索引或编号告诉Python要使用
列表
中的哪个项目)

Python
list
索引从零开始,因此要获取第一个(在本例中仅为
list
中的项),可以使用
x[0]

x = os.listdir("C:/NAPSG/PROJECTS/DHS/THD_Nuclear_Facilities/SCRIPT/CountyDownload/Data")
os.renames(x[0], "Test.gdb")
话虽如此,在这种情况下,我通常不会使用
x
作为变量名……我可能会编写一些不同的代码:

files = os.listdir("C:/NAPSG/PROJECTS/DHS/THD_Nuclear_Facilities/SCRIPT/CountyDownload/Data")
os.renames(files[0], "Test.gdb")
os.listdir()
返回文件夹中的文件/对象列表

列表
在打印到屏幕上时,使用一组括号表示。 每个文件的名称都是由字符组成的
字符串
字符串
在打印到屏幕上时使用引号表示

因此,我们看到了一个带有单个文件名的
列表

['f29a52b8908242f5b1f32c58b74c063b.gdb']
要使用Python访问
列表
中的项目,可以使用索引表示法(恰好也使用括号通过引用项目的索引或编号告诉Python要使用
列表
中的哪个项目)

Python
list
索引从零开始,因此要获取第一个(在本例中仅为
list
中的项),可以使用
x[0]

x = os.listdir("C:/NAPSG/PROJECTS/DHS/THD_Nuclear_Facilities/SCRIPT/CountyDownload/Data")
os.renames(x[0], "Test.gdb")
话虽如此,在这种情况下,我通常不会使用
x
作为变量名……我可能会编写一些不同的代码:

files = os.listdir("C:/NAPSG/PROJECTS/DHS/THD_Nuclear_Facilities/SCRIPT/CountyDownload/Data")
os.renames(files[0], "Test.gdb")

谢谢!效果很好。是的,我知道x是一个不好的变量名,只是有一些简单的测试方法。谢谢!效果很好。是的,我知道x是一个不好的变量名,只是有一些简单的测试方法。谢谢!成功了!谢谢!成功了!