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

Python 如何将文本导出到新文件userinput?,python,csv,input,user-input,overwrite,Python,Csv,Input,User Input,Overwrite,所以我用python编写了一个小程序,它允许我获取一个.csv文件,过滤掉我需要的行,然后将它们导出到一个新的.txt文件中。 这非常有效,因此我决定让用户通过控制台(命令行)选择自己应该转换的文件,从而使其更加友好 我的问题:该文件作为.csv文件导入,但没有作为.txt文件导出,这会导致我的程序覆盖原始文件,原始文件将被清空,因为我的程序中有一个步骤允许我删除输出文本的前两行 有人知道这个问题的解决方案吗 谢谢:) 我想您可能只是想用一个新名称保存文件,这涉及到拆分扩展名,这样您就可以添加自

所以我用python编写了一个小程序,它允许我获取一个.csv文件,过滤掉我需要的行,然后将它们导出到一个新的.txt文件中。 这非常有效,因此我决定让用户通过控制台(命令行)选择自己应该转换的文件,从而使其更加友好

我的问题:该文件作为.csv文件导入,但没有作为.txt文件导出,这会导致我的程序覆盖原始文件,原始文件将被清空,因为我的程序中有一个步骤允许我删除输出文本的前两行

有人知道这个问题的解决方案吗

谢谢:)


我想您可能只是想用一个新名称保存文件,这涉及到拆分扩展名,这样您就可以添加自己的扩展名了

你最终会得到这样的结果

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

您可能只需要更改输出文件的扩展名。下面是一个将输出文件扩展名设置为
.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行写入输出文件;无需再次读取和写入输出文件

这对你有用吗?

试试这个:


欢迎来到SO,你能把旧文件改成新文件吗?
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')
userinput = raw_input('List:')
f_extns = userinput.split(".")
saveFile = open(f_extns[0]+'.txt', 'w')