如何将文本导出到新文件,userinput?
How to export text to a new file, userinput?
所以我在 python 中写了一个小程序,它允许我获取一个 .csv 文件,过滤掉我需要的行,然后将它们导出到一个新的 .txt 文件中。
这工作得很好,所以我决定通过允许用户 select 应该通过控制台(命令行)自己转换的文件来使其更加用户友好。
我的问题:文件导入为 .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()
我想您可能只是想用一个新名称保存文件,这个 Extracting extension from filename in Python 谈到拆分扩展名,这样您就可以添加自己的扩展名
你最终会得到类似
的结果
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
#
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')
所以我在 python 中写了一个小程序,它允许我获取一个 .csv 文件,过滤掉我需要的行,然后将它们导出到一个新的 .txt 文件中。 这工作得很好,所以我决定通过允许用户 select 应该通过控制台(命令行)自己转换的文件来使其更加用户友好。
我的问题:文件导入为 .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()
我想您可能只是想用一个新名称保存文件,这个 Extracting extension from filename in Python 谈到拆分扩展名,这样您就可以添加自己的扩展名
你最终会得到类似
的结果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
#
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')