Как экспортировать текст в новый файл userinput? - PullRequest
2 голосов
/ 21 марта 2019

Итак, я написал небольшую программу на python, которая позволяет мне взять файл .csv, отфильтровать нужные мне строки и затем экспортировать их в новый файл .txt.Это сработало довольно хорошо, поэтому я решил сделать его более удобным для пользователя, позволив пользователю выбрать файл, который должен быть преобразован им самостоятельно через консоль (командная строка).

Моя проблема: файл импортируется какфайл .csv, но не экспортируется как файл .txt, что приводит к тому, что моя программа перезаписывает исходный файл, который будет очищен из-за шага в моей программе, который позволяет мне удалить первые две строки выходного текста.

Кто-нибудь знает решение для этого?

Спасибо:)

import csv
import sys

userinput = raw_input('List:')
saveFile = open(userinput, 'w')

with open(userinput, 'r') as file:
    reader = csv.reader(file)
    count = 0

    for row in reader:
        print(row[2])
        saveFile.write(row[2] + ' ""\n')
saveFile.close()

saveFile = open(userinput, 'r')
data_list = saveFile.readlines()
saveFile.close()

del data_list[1:2]

saveFile = open(userinput, 'w')
saveFile.writelines(data_list)
saveFile.close()

Ответы [ 3 ]

1 голос
/ 21 марта 2019

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

вы бы получили что-то вроде

name, ext = os.path.splitext(userinput)
saveFile = open(name + '.txt', 'w')
0 голосов
/ 22 марта 2019

Попробуйте:

userinput = raw_input('List:')
f_extns = userinput.split(".")
saveFile = open(f_extns[0]+'.txt', 'w')
0 голосов
/ 21 марта 2019

Возможно, вам просто нужно изменить расширение выходного файла.Вот решение, которое устанавливает расширение выходного файла .txt;если входной файл также .txt, тогда возникнет проблема, но для всех других расширений входного файла это должно работать.

import csv
import os

file_name = input('Name of file:')

# https://docs.python.org/3/library/os.path.html#os.path.splitext
# /490842/izvlechenie-rasshireniya-iz-imeni-faila-v-python
file_name, file_ext_r = os.path.splitext(file_name)
file_ext_w = '.txt'
file_name_r = ''.format(file_name, file_ext_r)
file_name_w = ''.format(file_name, file_ext_w)
print('File to read:', file_name_r)
print('File to write:', file_name_w)

with open(file_name_r, 'r') as fr, open(file_name_w, 'w') as fw:
    reader = csv.reader(fr)

    for i, row in enumerate(reader):
        print(row[2])

        if i >= 2:
            fw.write(row[2] + ' ""\n')

Я также упростил вашу логику, чтобы избежать записи первых 2 строкв выходной файл;не нужно снова читать и записывать выходной файл.

Это работает для вас?

...