使用 python 重命名目录中的某些子文件夹
Rename certain subfolders in a directory using python
我的文件夹结构如下所示:
/Forecasting/as_of_date=20220201/type=full/export_country=Spain/import_country=France/000.parquet'
大约有 2500 个这样的结构。
我正在尝试仅重命名某些子文件夹,主要是 export_country
重命名为 exp_cty
和 import_country
重命名为 imp_cty
。
到目前为止我试过了,但它似乎不起作用。我从来不必处理如此复杂的文件夹结构,而且我有点不确定该怎么做。我的脚本如下:
import os
from pathlib import Path
path = r"/datasets/local/Trade_Data" # Path to directory that will be searched
old = "import_country*"
new = "imp_cty"
for root, dirs, files in os.walk(path, topdown=False): # os.walk will return all files and folders in thedirectory
for name in dirs: # only concerned with dirs since I only want to change subfolders
directoryPath = os.path.join(root, name) # create a path to subfolder
if old in directoryPath: # if the 'export_country' is found in my path then
parentDirectory = Path(directoryPath).parent # save the parent directory path
os.chdir(parentDirectory) # set parent to working directory
os.rename(old, new)
您提出的代码有 2 个问题:
第一个:if old in directoryPath:
检查字符串 import_country*
是否在路径内。
根据你的问题我了解到你想重命名所有以“import_country”开头的目录
所以你可以使用startswith
。
第二个问题是 os.rename(old, new)
您正在尝试重命名不存在的 import_country*
目录,您应该使用 name
变量。
这是您的代码,稍作更改后可以正常工作,请注意,您必须使用 topdown=False
,因为您在遍历目录时重命名目录:
import os
from pathlib import Path
path = "/datasets/local/Trade_Data"
old_prefix = "import_country"
new_name = "imp_cty"
for root, dirs, files in os.walk(path, topdown=False):
for name in dirs:
if name.startswith(old_prefix):
directoryPath = os.path.join(root, name)
parentDirectory = Path(directoryPath).parent
os.chdir(parentDirectory)
os.rename(name, new_name)
我的文件夹结构如下所示:
/Forecasting/as_of_date=20220201/type=full/export_country=Spain/import_country=France/000.parquet'
大约有 2500 个这样的结构。
我正在尝试仅重命名某些子文件夹,主要是 export_country
重命名为 exp_cty
和 import_country
重命名为 imp_cty
。
到目前为止我试过了,但它似乎不起作用。我从来不必处理如此复杂的文件夹结构,而且我有点不确定该怎么做。我的脚本如下:
import os
from pathlib import Path
path = r"/datasets/local/Trade_Data" # Path to directory that will be searched
old = "import_country*"
new = "imp_cty"
for root, dirs, files in os.walk(path, topdown=False): # os.walk will return all files and folders in thedirectory
for name in dirs: # only concerned with dirs since I only want to change subfolders
directoryPath = os.path.join(root, name) # create a path to subfolder
if old in directoryPath: # if the 'export_country' is found in my path then
parentDirectory = Path(directoryPath).parent # save the parent directory path
os.chdir(parentDirectory) # set parent to working directory
os.rename(old, new)
您提出的代码有 2 个问题:
第一个:if old in directoryPath:
检查字符串 import_country*
是否在路径内。
根据你的问题我了解到你想重命名所有以“import_country”开头的目录
所以你可以使用startswith
。
第二个问题是 os.rename(old, new)
您正在尝试重命名不存在的 import_country*
目录,您应该使用 name
变量。
这是您的代码,稍作更改后可以正常工作,请注意,您必须使用 topdown=False
,因为您在遍历目录时重命名目录:
import os
from pathlib import Path
path = "/datasets/local/Trade_Data"
old_prefix = "import_country"
new_name = "imp_cty"
for root, dirs, files in os.walk(path, topdown=False):
for name in dirs:
if name.startswith(old_prefix):
directoryPath = os.path.join(root, name)
parentDirectory = Path(directoryPath).parent
os.chdir(parentDirectory)
os.rename(name, new_name)