如何在文件列表中循环itertools?

2024-04-19 19:28:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我设法为单个文件创建这个文件,以便在文件中切分行。我只想选单数。你知道吗

filename = sys.argv[1]
filename2 = sys.argv[2]

with open(filename) as f:
    items = itertools.islice(f, 0, None, 2)

    x = (list(items))
    final = "".join(x)

with open(filename2, 'a+') as bb:
    bb.write(final)

以上代码工作正常。但是我需要手动指定文件名。如果我有100个需要切片的文件呢?你知道吗

上面代码输出的示例。它将切片/删除偶数行。你知道吗

Input file
a
b
c
d
e

Output file
a
c
e

我在想回路。到目前为止,这是我的解决方案。你知道吗

# Directory where it contains my pat files.
mydir = "C:\\Users\\Desktop\\Scripts\\"
files = filter(lambda x: x.endswith('.pat'), os.listdir(mydir))

# print(list(files))
# ['filepat1.pat', 'filepat2.pat', 'filepat3.pat'.......]

i = 0
new_file = 'file{}.pat'.format(i)

for file in files:
    with open(file) as f:
       items = itertools.islice(f, 0, None, 2)
       x = (list(items))
       final = "".join(x)
       #print(final)
       for item in items:
           i +=1
           new_file = 'file{}.pat'.format(i)
           with open(new_file, 'a+') as ww:
               ww.write(final)

我犯了什么错?好像它错过了循环。你知道吗


Tags: 文件newaswithsysitemsfilesopen
1条回答
网友
1楼 · 发布于 2024-04-19 19:28:25

如果我错了,请纠正我,但是来自for item in items:的代码看起来很奇怪。据我所知,您试图从一个文件中提取奇数行并将它们存储在新文件中,对吗?你知道吗

你可以这样重写:

mydir = "C:\\Users\\Desktop\\Scripts\\"
files = filter(lambda x: x.endswith('.pat'), os.listdir(mydir))

#print(list(files))

for i, file in enumerate(files):
    with open(file) as f:
       items = itertools.islice(f, 0, None, 2)
       x = (list(items))
       final = "".join(x)
       #print(final)

       new_file = 'file{}.pat'.format(i)
       with open(new_file, 'a+') as ww:
           ww.write(final)

相关问题 更多 >