Сохранение имен файлов в текстовом файле с Python - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть каталог со многими файлами, и я хотел бы сохранить имя этих файлов в текстовом документе. Я собираюсь сделать это с несколькими каталогами, поэтому я хочу добавить имена ниже. Но с созданным кодом я удаляю файлы, уже сохраненные новыми.

Это мой код:

os.chdir("/Users/Desktop/Data")

a = open("Names_Genomes.txt", "w")

for path, subdirs, files in os.walk(r'/Users/Desktop/control/input/end'):
    for filename in files:
        f = os.path.join(path, filename)
        a.write(str(f) + os.linesep) 

И я тоже сохраняю каталог, но я этого не хочу.

/Users/Desktop/control/input/end/SRR3160442_bin.7.fna
/Users/Desktop/control/input/end/SRR1039533_bin.14.fna
/Users/Desktop/control/input/end/SRR6257496_bin.3.fna
/Users/Desktop/control/input/end/ERR1305905_bin.7.fna

Может кто-нибудь сказать мне, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Чтобы записать только имя файла, вы должны удалить соединение по абсолютному пути. Просто сделайте следующее:

os.chdir("/Users/Desktop/Data")

a = open("Names_Genomes.txt", "a")

for path, subdirs, files in os.walk(r'/Users/Desktop/control/input/end'):
    for filename in files:
        a.write(filename + os.linesep) 

Имейте в виду, что я изменил режим в команде open() на a вместо 'w', который не перезапишет ваши данные, но добавит их.

0 голосов
/ 05 апреля 2020

Если вы хотите сохранить только имена файлов, а не абсолютный путь к файлу, вы должны удалить строку:

f = os.path.join(path, filename)

Окончательный код должен выглядеть примерно так:

os.chdir("/Users/Desktop/Data")

a = open("Names_Genomes.txt", "w")

for path, subdirs, files in os.walk(r'/Users/Desktop/control/input/end'):
    for filename in files:
        a.write(str(filename) + os.linesep)
...