如何在不同目录下写入多个同名csv文件的路径?

问题描述 投票:0回答:3

每个目录中有不同的子目录,文件名相同。 (每个文件夹20个文件)

例如:

FolderA:
1.txt
2.txt
3.txt

FolderB:
1.txt
2.txt
3.txt

FolderC:
1.txt
2.txt
3.txt

等等

我想将每个文件夹中相同文件的路径写入csv文件。输出应有 20 个带路径的 csv 文件

我是 Python 的新手。有人可以帮我吗。

谢谢

输出示例:

output_1.csv
path/to/FolderA/1.txt
path/to/FolderB/1.txt
path/to/FolderC/1.txt

output_2.csv
path/to/FolderA/2.txt
path/to/FolderB/2.txt
path/to/FolderC/3.txt
python csv
3个回答
0
投票

鉴于:

C:\FILES
├───FolderA
│       1.txt
│       2.txt
│       3.txt
│
├───FolderB
│       1.txt
│       2.txt
│       3.txt
│
└───FolderC
        1.txt
        2.txt
        3.txt

您可以使用

pathlib
模块递归收集文件。 我假设您希望基本文件名成为输出名称的一部分。
.stem
属性是不带扩展名的基本文件名。

from pathlib import Path

# Delete output files if they already exist.
for filename in Path(r'.').glob('output_*.csv'):
    filename.unlink()

# For each text file, append its absolute path to the appropriate file.
for filename in Path(r'c:\files').rglob('*.txt'):
    with open(f'output_{filename.stem}.csv', 'a') as fout:
        print(filename.absolute(), file=fout)

输出:

output_1.csv

c:\files\FolderA\1.txt
c:\files\FolderB\1.txt
c:\files\FolderC\1.txt

output_2.csv

c:\files\FolderA\2.txt
c:\files\FolderB\2.txt
c:\files\FolderC\2.txt

output_3.csv

c:\files\FolderA\3.txt
c:\files\FolderB\3.txt
c:\files\FolderC\3.txt

0
投票

我觉得你应该使用for循环,例如:

Import os

Folder_num = 1    

For i in range(20#<- number of folders):
       Parent = Folder
       X = 0
       For i in range(3#<-number of files in folder):
           Print(os.listdir(path)[x])#prints path to first file in directory
           X+= 1
       Folder_num += 1

这可能行不通,因为我没有时间检查和调试它,但希望你能明白主要想法。


-1
投票

要完成此任务,您可以将 Python 与

os
csv
库结合使用。以下是分步指南和示例脚本,可帮助您生成带有路径的 CSV 文件:

import os
import csv

# Define the root directory containing all folders
root_dir = 'path/to/root_directory'  # Update this with your actual path

# Get all subdirectories
subdirectories = [os.path.join(root_dir, d) for d in os.listdir(root_dir) if os.path.isdir(os.path.join(root_dir, d))]

# Dictionary to store file paths
file_paths = {}

# Iterate through each subdirectory
for subdir in subdirectories:
    for file_name in os.listdir(subdir):
        if file_name.endswith('.txt'):
            file_path = os.path.join(subdir, file_name)
            if file_name not in file_paths:
                file_paths[file_name] = []
            file_paths[file_name].append(file_path)

# Write paths to separate CSV files
for index, (file_name, paths) in enumerate(file_paths.items()):
    csv_file_name = f'output_{index + 1}.csv'
    with open(csv_file_name, mode='w', newline='') as csvfile:
        csv_writer = csv.writer(csvfile)
        csv_writer.writerow(paths)

print("CSV files generated successfully.")

'path/to/root_directory'
替换为包含文件夹的目录路径。

此脚本将生成所需的 CSV 文件,每个文件都包含不同目录中具有相同名称的文件的路径。每个文件将被命名为

output_X.csv
,其中
X
是从 1 开始的索引。

© www.soinside.com 2019 - 2024. All rights reserved.