Python 使用不断更改的名称重命名目录
我创建了一个脚本,应该下载一些数据,然后运行一些进程。数据源(ArcGIS Online)始终以zip文件的形式下载数据,提取时,文件夹名称将是一系列字母和数字。我注意到这些情况偶尔会发生变化(不完全确定原因)。我的想法是运行os.listdir来获取文件夹名,然后重命名它。我遇到的问题是,列表返回带有括号和引号的文件夹名称。它以['F29A52B8908242F5B1F1F32C58B74C063B.gdb']作为文件夹名返回,而文件资源管理器中的文件夹没有括号和引号。下面是我的代码和收到的错误Python 使用不断更改的名称重命名目录,python,arcpy,Python,Arcpy,我创建了一个脚本,应该下载一些数据,然后运行一些进程。数据源(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要使用列表
中的哪个项目)
Pythonlist
索引从零开始,因此要获取第一个(在本例中仅为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要使用列表
中的哪个项目)
Pythonlist
索引从零开始,因此要获取第一个(在本例中仅为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是一个不好的变量名,只是有一些简单的测试方法。谢谢!成功了!谢谢!成功了!