rocky1972 发表于 2016-08-03 17:59

请教大神 python 是否支持这种格式化字符串的操作?

我的本意是把file.py读出来,然后作为echo的参数,格式化成一个字符串,然后用shell放在另外一台机器上跑,这样可以不用拷贝该file.py文件In : with open("file.py", "r") as f:
    data=f.read()
    print data
   ....:   
with open ("/tmp/file.py", "r") as myfile:
    data=myfile.read()
print data

with open ("/tmp/2", "wr") as myfile:
   myfile.write(data)


In : "echo -e %s > /tmp/1" % data
Out: 'echo -e with open ("/tmp/file.py", "r") as myfile:\n    data=myfile.read()\nprint data\n\nwith open ("/tmp/2", "wr") as myfile:\n   myfile.write(data)\n > /tmp/1'
实际上data 里包含里很多特殊字符,用%s格式化后生成的字符串在放到shell里执行老有问题,
请问下这种情况python有没有处理的好办法?

谢谢!

代号:军刀 发表于 2016-08-03 20:00

这个还不如就直接用shell读取,shell生成方便

rocky1972 发表于 2016-08-04 08:15

回复 2# 代号:军刀


这段代码得放在python里实现。。。。:sleepy:

   

jeppeter 发表于 2016-08-04 08:36

回复 1# rocky1972


    你说的是可以的,但有一个要注意的,就是你原来要在程序执行的时候用的格式字符串必须改变,就是如果在程序执行时是%s的,要写成%%s这样才行,我给你一个建议,还不如进行关键字替换,如你可以设定REPLACE_NAME作为关键字,这个字来替换更好。而且更不容易出错。

Riet 发表于 2016-08-16 17:32

用%r 呢可以不可以

ghostwwl 发表于 2016-08-19 09:16

本帖最后由 ghostwwl 于 2016-08-19 10:16 编辑

python --help看看

我忘了 几年前用过 shell 的输出然后传到py处理 然后再传回shell

找不到了 。。。

类似这种。。。。。。

# python -c 'a=open("x.py","rb");print a.read();a.close();'|wc -l
页: [1]
查看完整版本: 请教大神 python 是否支持这种格式化字符串的操作?