【发布时间】:2017-03-20 13:42:38
【问题描述】:
我正在编写一个 Python 小脚本,它将本地天气条件和一些网络信息添加到我的 .bashrc 文件中。除了两个错误之外,一切都按预期工作:首先不是删除旧数据并附加新数据,而是像这样附加新数据:
('echo [当地天气]:', 66.9, 'F', 'with', '阴云密布') ('echo [你的公网IP是]:', 'x.x.x.x'('echo [本地天气]:', 66.9, 'F', 'with', '阴云') ('echo [Your public IP is]:', 'x.x.x.x')
其次,我需要从打印的文本中删除格式,例如(括号、逗号等),以便字符串如下所示:
回声 [当地天气]:66.9F,多云
echo [公共 IP]: x.x.x.x
这是我的脚本的文件操作部分:
with open('HOME/.bashrc', 'a') as f:
w = "echo [Local weather]:", wx_t,"F", "with", wx_c
i = "echo [Your public IP is]:", ip
out = [str(w), str(i)]
f.write('\n'.join(out)[0:-3])
所以我认为f.write('\n'.join(out)[0:-3]) 会删除文件的最后 3 行,但显然它会删除字符串的最后 3 个字符。我需要改变什么来实现我尝试的目标?我应该使用f.writelines() 而不是f.write()?
预期的结果最终会是这样的:
欢迎来到 [hostname] 您以 [some_user] 用户身份登录
[当地时间]:2017 年 3 月 20 日星期一 08:28:32 CDT。
[当地天气]:66.56 F,天空晴朗
【本地IP】:192.168.x.x 【公网IP】:x.x.x.x
提前致谢,如果这是重复的问题,我深表歉意。我觉得我已经尽职尽责地寻找解决方案,但我没有成功。
更新: 所以我通过更改来修复格式
w = "echo [Local weather]:", wx_t,"F", "with", wx_c
到
w = "echo [Local weather]: " + str(wx_t) + " F, with " + wx_c
并使用f.writelines() 而不是f.write()。我还按照 DeepSpace 的建议删除了 f.close()
【问题讨论】:
-
附带说明,您无需致电
f.close(),因为您使用的是with。 -
谢谢。我对 python 还是很陌生,不确定我是否会安全地玩它
标签: linux python-3.x file-io append text-formatting