使用动态命名导出多个 csv 文件

Exporting multiple csv files with dynamic naming

我在 Python 中创建了大约 200 个 csv 文件,现在需要全部下载。

我使用以下方法从单个文件创建文件:

g = df.groupby("col")
for n,g in df.groupby('col'):
    g.to_csv(n+'stars'+'.csv')

当我尝试使用相同的语句导出到我的机器时,出现语法错误,我不确定自己做错了什么:

g = df.groupby("col")
for n,g in df.groupby('col'):
    g.to_csv('C:\Users\egagne\Downloads\'n+'stars'+'.csv'')

错误:

  File "<ipython-input-27-43a5bfe55259>", line 3
    g.to_csv('C:\Users\egagne\Downloads\'n+'stars'+'.csv'')
                                                 ^
SyntaxError: invalid syntax

我在 Jupyter 实验室,所以我可以单独下载每个文件,但我真的不想那样做。

g.to_csv('C:\Users\egagne\Downloads\'n+'stars'+'.csv'') 需要是 g.to_csv('C:\Users\egagne\Downloads\'+n+'stars.csv').

有两处错误 -- 反斜杠是转义字符,因此如果您在其后放置 ',它将被视为字符串的一部分,而不是您预期的结束引号。使用 \ 而不是单个 \ 转义转义字符,以便您可以在字符串中包含反斜杠。

此外,您没有正确配对引号。 n 是一个变量名,但从您问题中突出显示的语法可以清楚地看出它是字符串的一部分。同样,您可以看到 stars.csv 未作为字符串的一部分突出显示,结束的 '' 应该是出现问题的红旗。

编辑:我解决了导致问题的原因,但 Ami Tavory 的回答是正确的——尽管你知道这将在 windows 上 运行,但更好的做法是使用 os.path.join() 与目录名称,而不是在字符串中写出路径。如果您完全不确定 n 的类型,str(n) 也是正确的方法。

您可能混淆了整数和字符串,而且在文字中使用反斜杠无论如何都是危险的。考虑使用以下

import os

循环内部

    f_name = os.path.join('C:', 'users', ' egagne', 'Downloads', str(n), 'stars.csv')
    g.to_csv(f_name)

os.path.join 为您处理反斜杠。