【问题标题】:How to export text to a new file, userinput?如何将文本导出到新文件,用户输入?
【发布时间】:2019-08-12 18:15:33
【问题描述】:

所以我在 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()

【问题讨论】:

  • 欢迎使用 SO,您可以写入新文件而不是旧文件吗?

标签: python csv input user-input overwrite


【解决方案1】:

试试这个:

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

【讨论】:

    【解决方案2】:

    我认为您可能只是想用新名称保存文件,Extracting extension from filename in Python 谈到拆分扩展名,以便您可以添加自己的扩展名

    你最终会得到类似的东西

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

    【讨论】:

      【解决方案3】:

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

      这对你有用吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-08-22
        • 1970-01-01
        • 1970-01-01
        • 2016-05-13
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        相关资源
        最近更新 更多