如何遍历子文件夹并将文件转换为csv,同时将它们保存在该子文件夹中



我有一个文件夹和子目录,其中有txt文件。我想将每个txt文件转换为csv,并保存与txt文件同名的文件,但在csv格式。例如,我有一个名为a的文件夹a有

  • 子文件夹B (B有C、D等子文件夹)。每个子文件夹中都有一个文件名不同的文件,如test1.txt、test112。json等。
  • 子文件夹E (E有F、K等子文件夹)。每个子文件夹都有一个文件名不同的文件,比如子文件夹F有testF.txt, testFgf。其中子文件夹K有testKk.txt。

我想将每个。txt文件转换为每个子文件夹的。csv,并具有相同的文件名:

  • 子文件夹B (B有C、D等子文件夹)。每个子文件夹中都有一个文件名不同的文件,如test1.txt、test1。json,test1.csv
  • 子文件夹E (E有F、K等子文件夹)。每个子文件夹都有一个文件名不同的文件,比如子文件夹F有testF.txt, testF.txt。json,testF.csv,子文件夹K有testKk.txttestKk.csv.我试过了:
root="C:/user/main_folder/A/"
for path, subdirs, files in os.walk(root):
for name in files:
filepath = root + os.sep + name
if filepath.endswith(".txt"):
print(os.path.join(path, name))
file=task_info
task_info.to_csv(path.join(filepath, file_name), index=False)

在这里,我可以从每个子文件夹中获得正确的文件路径,但我不能将它们转换为csv并将它们保存在具有正确名称的正确文件夹中。如有任何帮助,不胜感激。

对于文件的路径,您需要使用:

root="C:/user/main_folder/A/"
path, subdirs, files next(os.walk(root))
for ele in subdirs:
_, _, file next(os.walk(root+ele)
for name in files:
filepath = root + os.sep + ele + os.sep
if name.endswith(".txt"):
new_name = name.split('.')[0] 
os.rename(filepath+name, filepath+new_name+'.csv')

EDIT:正在编辑文件

可以使用递归

root="C:/user/main_folder/A"
def explore_and_execute(initial_path):
for item in os.listdir(initial_path):
item_fullpath = initial_path+"/"+item
if os.path.isdir(item):
explore_and_execute(item_fullpath)
if os.path.isfile(item):
if item.endswith(".txt"):
edit_file(filepath)
os.rename(item_fullpath, item_fullpath[:-4]+".csv")

def edit_file(filepath):
with open(filepath, "r") as f:
original_data = f.read()
with open(filepath, "w") as f:
# put your edit scenario here
...

explore_and_execute(root)    

在这里你将循环直到目录分支

结束

最新更新