python - 使用python将多个未排序的文本文件合并为一个排序文件
问题描述
我有一个文本文件名称列表作为python中的变量。我想创建另一个文本文件,其中包含列表中文件的所有行,并且我希望这个文件按行排序。
如何使用 python 以最有效的方式做到这一点?
这相当于我想在 bash 中做的事情:
cat file1.txt file2.txt file3.txt | sort -h >> combined_and_sorted.txt
解决方案
我创建了每个 3 行的简单文件。
我的解决方案是:
with open("file 1.txt", 'r') as f1, open("file 2.txt", 'r') as f2,open("file 3.txt", 'r') as f3:
with open("outfile.txt", 'w') as o:
files = [f1,'b',f2,'b',f3]
for i in files:
if i != 'b':
lines = i.readlines()
else:
lines = '\n'
o.writelines(lines)
说明:
所有要读取的文件都写在一个句子“with open (file_name,'r')”上。'r' 代表阅读。
输出文件在下一句'with open("outfile.txt", 'w')'
然后创建了一个列表,其中包含文件的变量名称和它们之间的字母“b”。'b' 是故意放置的,因为格式问题。
当“循环 for”找到一个文件 (f1,f2,f3) 时,它会获取文件的行。否则它会得到一个'b'并添加一个换行符。
在过程结束时,所有内容都写入 outfile.txt,变量名称为“o”,按照文件和文件中的行的顺序。
如果没有 'b',输出文件会这样写:
file 1 line 1
file 1 line 2
file 1 line 3file 2 line 1
file 2 line 2
file 2 line 3file 3 line 1
file 3 line 2
file 3 line 3
使用我发布的代码,它以这种方式打印:
f = open("outfile.txt",'r')
print(f.read())
file 1 line 1
file 1 line 2
file 1 line 3
file 2 line 1
file 2 line 2
file 2 line 3
file 3 line 1
file 3 line 2
file 3 line 3
推荐阅读
- ssis - 使用SSIS中的循环将数据加载到单个excel文件中
- node.js - 改变 fs.createReadstream 的内容
- python - 如何在python中遍历不同的文件名
- c++ - 如何更改 C++ 中的分隔符 [for csv]
- swiftui - SwitfUI - 定时器不重置
- javascript - React Native Fetch Remote Http 请求抛出网络请求失败(在 Android 设备上)
- javascript - 未捕获的类型错误:无法读取未定义的属性“clearRect”
- c++ - C ++:调用对象方法的回调处理程序
- slack-api - SlackAPI - 包括对话框输入和原始消息
- google-cloud-platform - 我应该为 Tiktok 克隆应用程序使用 Google Cloud Storage 还是 Unlimited Google Drive