如何将脚本应用于文件夹中的所有文件?

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

我有几个 txt 文件已成功转换为 csv 文件,现在我想以相同的方式清理它们,但我的脚本在读取文件名时遇到问题。

首先我将我感兴趣的文件夹中的所有 txt 文件转换为 csv 文件:

files_dir = r'/Desktop/raw_data'  
files = os.listdir(files_dir) 

for file in files:
    if fnmatch.fnmatch(file, 'deseq2*'):
        extension = os.path.splitext(file)[1]
        if extension =='.txt':
            filename = os.path.join(files_dir, file)
            df = pd.read_csv(filename, sep='|')
            new_filename = os.path.splitext(filename)[0] + '.csv'
            df.to_csv(new_filename, index=False)

我想对创建的所有 csv 文件应用以下“清理”,然后保存。这是一个字符串列表(基因),并且只从 gene_name 列中提取这些基因的数据。

cleaned = df[df['gene_name'].isin(genes)]

这是我尝试对文件夹中的所有文件执行此操作的方法:

path = r'/Desktop/raw_data'
all_files = glob.glob(os.path.join(path, "*.csv")) #make list of paths

for file in all_files:
    # Getting the file name without extension
    file_name = os.path.splitext(os.path.basename(file))[0]
    df = pd.read_csv(file_name)
    cleaned = df[df['gene_name'].isin(genes)]
    df.to_csv(file_name)

我认为我已经确定问题出现在以下代码行:

 df = pd.read_csv(file_name)

我收到以下错误: [Errno 2] 没有这样的文件或目录:'example_file'

我想也许我需要在文件名中包含 .csv 所以我尝试了以下但我也遇到了错误。

df = pd.read_csv(file_name +'.csv')

[Errno 2] 没有这样的文件或目录:'example_file.csv'

我对发生的事情感到困惑,因为该文件肯定存在于我引用的文件夹中。任何帮助表示赞赏。

用于对取自here.

的所有csv文件应用数据清理的代码
python pandas csv data-cleaning
1个回答
0
投票

您得到没有路径或扩展名(词干)的文件名,然后尝试使用该部分名称打开文件。但是您需要完整的文件名才能在磁盘上实际找到它,而不仅仅是词干。你可以

print(file, file_name)
看到差异。

既然你想替换现有的文件,你可以完全删除那个处理。另外,确保你写的是经过擦洗的表格,而不是原来的表格。

path = r'/Desktop/raw_data'
all_files = glob.glob(os.path.join(path, "*.csv")) #make list of paths

for file in all_files:
    df = pd.read_csv(file)
    cleaned = df[df['gene_name'].isin(genes)]
    cleaned.to_csv(file)
© www.soinside.com 2019 - 2024. All rights reserved.