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)
我的错误是什么?似乎它缺少循环。
解决方案
如果我错了,请纠正我,但代码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)
推荐阅读
- html - 通过 Sahi Pro 发送时,纯 HTML/CSS 垂直字符不会出现在电子邮件内容中
- python - 使用用户输入在 Django 中创建文件
- directory - 使用 SAP BODS 脚本创建目录?
- python - 在python中创建字符串模式
- matlab - MATLAB 中的 KD-Tree 在地理数据集上出错
- python - 使用“表格视图”向表格添加按钮
- javascript - 搜索多个约束的对象数组(两个属性)
- javascript - 如果对象在JS中的数组中,则从数组中推送或删除对象
- android - 我如何知道用户在应用选择器中点击了哪些应用或按钮?
- excel - 访问类中的公共字典