如何将文本导出到新文件userinput?

时间:2019-03-21 19:36:39

标签: python csv input user-input overwrite

所以我用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 个答案:

答案 0 :(得分:1)

我认为您可能只想用一个新名称保存文件,此Extracting extension from filename in Python讨论了如何扩展扩展名,以便您可以添加自己的扩展名

您最终会得到类似

的信息
name, ext = os.path.splitext(userinput)
saveFile = open(name + '.txt', 'w')

答案 1 :(得分:0)

您可能只需要更改输出文件的扩展名。这是将输出文件扩展名设置为.txt的解决方案;如果输入文件也是.txt,则可能会有问题,但是对于输入文件的所有其他扩展名,它应该可以工作。

import csv
import os

file_name = input('Name of file:')

# https://docs.python.org/3/library/os.path.html#os.path.splitext
# https://stackoverflow.com/questions/541390/extracting-extension-from-filename-in-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 :(得分:0)

尝试一下:

userinput = raw_input('List:')
f_extns = userinput.split(".")
saveFile = open(f_extns[0]+'.txt', 'w')