从多行字符串中的第一行读取



我有一个目录,其中包含以下文件:

ab_list
bd_list
cd_list
mno_list
hk_list 
pd_list

我有另一个名为testfile的文件,在此目录之外为:

abc
que nw
ab_list   ON   8
gs_list   ON   9
hk_list   OFF  9
bd_list   ON   7
cd_list   OFF  6
fr_list   ON   5
mno_list  ON   4
pq_list   OFF   6
jk_list   ON   7
pd_list   OFF  8

我想比较 2 和所有文件旁边带有文件名和 ON(如果匹配(,它们的内容应该合并到一个名为 merge_file 的新文件中。其他与测试文件匹配但具有 OFF 的文件,它们的文件名应打印在new_file中。 ab_list bd_list的内容和mno_list应合并到top_file

这是我到目前为止尝试过的代码:

from glob import glob
test_file_directory = "C:\Users\User\Desktop\Folder\"
files1 = glob("*.txt")
with open(test_file_directory+"testfile.txt","r") as f:
files2 = [' '.join([l.split()[0],l.split()[1]]) for l in f.readlines()[3:]]
for f1 in files1:
for f2 in files2:
if f1[:-4]+'   ON' == f2:
#print('match')
with open('merge_file.txt','a') as a:
with open(f1,'r') as r:
a.write(r.readlines()[1:]+'n')
elif f1[:-4]+'   OFF' == f2:
#print('match')
with open('match_file.txt','a') as a:
with open(f1,'r') as r:
a.write(f"{f2} {len(r.readlines())}n")
elif f1[:-4]+'   ON' == f2:
#print('match')
with open('match_file.txt','a') as a:
with open(f1,'r') as r:
a.write(f"{f2} {len(r.readlines())}n")

我希望写入的文件内容merge_file开始从文件的第二行而不是第一行读取,并且match_file旁边还有带有 ON 的文件名(它从第一个 OF 开始有 OFF(a.write(r.readlines()[1:]+'n'此行给出一个错误,指出它是一个字符串而不是列表。

a.write(r.readlines(([1:]+''(

它使用 r.readlines(([1:] 和 '' 执行加法。

r.readlines(([1:] 是一个包含文件中每一行的列表。

所以你得到了错误

类型错误:只能将列表(不是"str"(连接到列表

您应该做的是使用连接将列表中的所有行与""连接,例如

a.write('n'.join(r.readlines()[1:])+'n')

无论如何,要复制文件的内容,你应该使用 f.read((,而不是 f.readlines((

a.write(r.read()+'n')

要获得第一行,您可以使用str.partition(''(,它将源字符串分为三个分区,如[first_string,'',next_string],如

a.write(r.read().partition('n')[2]+'n')

相关内容

  • 没有找到相关文章