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

avkwfej4  于 2023-04-27  发布在  其他
关注(0)|答案(1)|浏览(123)

我有几个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)

我得到以下错误:[错误2]没有这样的文件或目录:'example_file'
我想也许我需要在文件名中有.csv,所以我尝试了以下方法,但我也得到了一个错误。

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

[错误2]没有这样的文件或目录:'example_file.csv'
我很困惑,因为这是怎么回事,因为该文件肯定存在的文件夹中,我引用。任何帮助是赞赏。
将数据清理应用于从here获取的所有csv文件的代码。

xqnpmsa8

xqnpmsa81#

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

相关问题