python - Python:获取一个文本文件并生成另一个文本文件并修改某些行的脚本
问题描述
我正在编写一个 python 脚本,它需要一个文本文件,并且应该生成另一个文本文件,其中某些行的更改最少。
我一直被卡住,希望能得到一些帮助。
目的是我可以从命令行运行:
$ ./script_j_to_uj.py eval_c_sensor.j eval_c_sensor.uj
并且 .uj 包含具有指定更改的 .j 文本。到目前为止,我的代码是:
#!/usr/bin/env python
import os, sys
input = open(sys.argv[1])
output = open(sys.argv[2], 'w')
for s in input.xreadlines( ):
output.write(s.replace("lib_c_support", "lljvm/lib/lib_c_support"))
output.write(s.replace(".method public <clinit>()V", ".method static <clinit>()V"))
output.write(s.replace("invokestatic java/lang/lljvm/lib/c/exit(I)V", ";;;; invokestatic java/lang/lljvm/lib/c/exit(I)V"))
output.write(s.replace(".method public static main([Ljava/lang/String;)V", ".method public static main()V"))
output.write(s.replace("invokestatic eval_c_sensor/main()I", "invokestatic eval_c_sensor/main2()I"))
output.write(s.replace(".method public static main()I", ".method public static main2()I"))
output.close( )
input.close( )
但这会产生错误。我相信我的第一个错误是查看文本文件,但我不确定。错误是:
File "C:/Users/SvenA/OneDrive/Documents/temp/script.py", line 6, in <module>
for s in input.xreadlines( ):
AttributeError: '_io.TextIOWrapper' object has no attribute 'xreadlines'
解决方案
我假设您打算编写类似于以下内容的内容:
#!/usr/bin/env python
import os, sys
with open(sys.argv[1]) as input:
# Ensure the output file is empty
with open(sys.argv[2], 'w') as output:
output.write('')
# Write all of the lines
with open(sys.argv[2], 'a') as output:
for s in input.readlines():
output.write(s.replace("lib_c_support", "lljvm/lib/lib_c_support"
).replace(".method public <clinit>()V", ".method static <clinit>()V"
).replace("invokestatic java/lang/lljvm/lib/c/exit(I)V", ";;;; invokestatic java/lang/lljvm/lib/c/exit(I)V"
).replace(".method public static main([Ljava/lang/String;)V", ".method public static main()V"
).replace("invokestatic eval_c_sensor/main()I", "invokestatic eval_c_sensor/main2()I"
).replace(".method public static main()I", ".method public static main2()I"))
我的代码还是有点乱,但你似乎遇到了三个问题:
- 写 6 次而不是 1 次
- 使用 'w'rite 而不是 'a' append 作为模式,并且
- 使用
xreadlines
而不是readlines
.
推荐阅读
- python - 如何在两个列表中找到紧密匹配的唯一元素?(这里使用距离函数)
- c++ - 在 VS2017 的库中查找符号
- python - 用于匹配子字符串的正则表达式
- reactjs - createBottomTabNavigator 保持安装堆栈
- javascript - 如何防止按键重复被触发 - JavaScript/jQuery
- java - 创建的通知android未显示在手机中
- excel - 运行时错误“1004”方法范围类的自动筛选失败
- javascript - 如何在 Leaflet 中单击时返回有关 geojson 多边形的详细信息?
- python - spark-submit 作业在集群模式下不起作用
- python - SQLAlchemy 查询 API 无法与提示一起正常工作