Экспорт нескольких CSV-файлов с динамическим именованием - PullRequest
0 голосов
/ 17 мая 2018

Я создал около 200 CSV-файлов в Python, и теперь нужно загрузить их все.

Я создал файлы из одного файла, используя:

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, поэтому я могу загрузить каждый файл по отдельности, но я действительно не хочу этого делать.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Возможно, вы смешиваете целые числа и строки, и использование обратной косой черты в литералах опасно в любом случае.Подумайте об использовании следующих

import os

внутри цикла

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

с os.path.join, чтобы позаботиться о обратной косой черте для вас.

0 голосов
/ 17 мая 2018

g.to_csv('C:\Users\egagne\Downloads\'n+'stars'+'.csv'') должно быть g.to_csv('C:\\Users\\egagne\\Downloads\\'+n+'stars.csv').

Были две неправильные вещи: обратная косая черта является escape-символом, поэтому, если после нее поставить ', она будет рассматриваться как частьВаша строка вместо закрывающей кавычки, как вы и предполагали.Использование \\ вместо одного \ экранирует экранирующий символ, так что вы можете включить обратную косую черту в строку.

Кроме того, вы не правильно связали свои кавычки.n - это имя переменной, но из подсветки синтаксиса в вашем вопросе ясно, что она является частью строки.Точно так же вы можете видеть, что stars и .csv не выделены как часть строки, и закрывающий '' должен быть красным флагом того, что что-то пошло не так.

Редактировать: я обратился к тому, чтовызывая проблему, но ответ Ами Тавори верный - хотя вы знаете, что он будет работать в Windows, лучше использовать os.path.join() с именами каталогов, а не записывать путь в строке.str(n) также правильный путь, если вы совсем не уверены в типе n.

...