【发布时间】:2018-04-29 22:19:19
【问题描述】:
我正在尝试创建一个函数来从一个文件中复制行,从文件中删除第一行 omit_from_start 和最后一个 omit_from_end 行,并将其余行写入新文件。
这是我尝试过的:
def truncate_file(file1, file2):
# file1 = "omit_lines_test.txt" # Just for testing
# file2 = "truncated_file.txt" # Just for testing
infile = open(file1, "r")
outfile = open(file2, "w")
print("\n*** Truncating file copy ***\n")
omit_from_start = int(input("Omit how many lines from the start: "))
omit_from_end = int(input("Omit how many lines from the end: "))
lines_to_output = []
lines = [line for line in infile]
lines_to_output.append(str(lines[omit_from_start:omit_from_end]))
for line in lines_to_output:
for character in line:
outfile.write(character)
infile.close()
outfile.close()
我的infile 只是一个包含['1\n', '2\n', '3\n', '4\n', '5\n', '6\n', '7\n', '8\n', '9\n', '10\n'] 的文本文件,我需要outfile 包含例如['4\n', '5\n', '6\n', '7\n', '8\n'] 用于omit_from_start = 3 和omit_from_end = 2。
目前,lines_to_output 仅包含 ['[]']。我也尝试过使用 .join() 和 .pop() 方法,但它们也不会产生我想要的结果。
【问题讨论】:
-
@eyllanesc:您链接到的问题是关于搜索每一行以查找特定字符串的问题。我只是想省略行的范围。如您所见,我尝试对
lines列表进行切片。 -
您可能想要
lines[omit_from_start:-omit_from_end]或lines[omit_from_start:len(line)-omit_from_end](取决于您想要为0 做什么)。 -
另外,由于您通过将整个文件读入行列表并将行列表输出到另一个文件来执行此操作,因此文件部分不相关 - 关于如何从 list 的开头和结尾删除元素会对您有所帮助。这是一个更容易的问题(你已经写了困难的部分)。
标签: python python-3.x list file