Python远程追加文件

Python远程追加文件,python,post,urllib2,urllib,Python,Post,Urllib2,Urllib,在python中,将数据附加到现有文件(本地)似乎很容易,但远程执行却不那么容易(至少我发现了这一点)。是否有一些直接的方法来实现这一点 我尝试使用: import subprocess cmd = ['ssh', 'user@example.com', 'cat - > /path/to/file/append.txt'] p = subprocess.Popen(cmd, stdin=subprocess.PIPE) inmem_data = 'foobar\n'

在python中,将数据附加到现有文件(本地)似乎很容易,但远程执行却不那么容易(至少我发现了这一点)。是否有一些直接的方法来实现这一点

我尝试使用:

import subprocess

cmd = ['ssh', 'user@example.com',
       'cat - > /path/to/file/append.txt']

p = subprocess.Popen(cmd, stdin=subprocess.PIPE)

inmem_data = 'foobar\n'

for chunk_ix in range(0, len(inmem_data), 1024):
    chunk = inmem_data[chunk_ix:chunk_ix + 1024]
    p.stdin.write(chunk)
但也许这不是解决问题的方法;因此,我尝试发布一个查询:

import urllib
import urllib2

query_args = { 'q':'query string', 'foo':'bar' }

request = urllib2.Request('http://example.com:8080/')
print 'Request method before data:', request.get_method()

request.add_data(urllib.urlencode(query_args))
print 'Request method after data :', request.get_method()
request.add_header('User-agent', 'PyMOTW (http://example.com/)')

print
print 'OUTGOING DATA:'
print request.get_data()

print
print 'SERVER RESPONSE:'
print urllib2.urlopen(request).read()

但是我得到了
连接被拒绝
,所以我显然需要某种类型的表单处理程序,不幸的是,我不知道这些。有没有推荐的方法来实现这一点?谢谢。

如果我理解正确,您正在尝试将远程文件附加到本地文件

我建议使用布料

我用文本文件试过,效果很好

请记住在运行脚本之前安装结构:

pip install fabric
将远程文件附加到本地文件(我认为这是不言自明的):

将其作为任何python文件运行(无需使用“fab”应用程序)

希望这有帮助

编辑:在远程文件末尾写入变量的新脚本:

同样,使用织物非常简单

from fabric.api import (cd, env, run)
from time import time

env.host_string = "127.0.0.1:2222"
env.user = "jfroco"
env.password = "*********"

remote_path = "/home/jfroco/development/fabric1"
remote_file = "test.txt"

variable = "My time is %s" % time()

with cd(remote_path):
    run("echo '%s' >> %s" % (variable, remote_file))

在本例中,我使用time.time(),但可以是任何内容。

您试图远程写入文件吗?SSH还是HTTP?如果另一端有web服务器,则可以根据需要发送HTTP请求。如果配置了SSH,您还应该能够使用它。这取决于你在听什么。@RyanO'Donnell,嗯,也可能是真的。我真正想做的就是获取一个变量,比如说
$var=“1234”
,然后将该值(远程)附加到包含其他值的现有文件中。我想获取一个变量(从本地脚本生成)并将其发送到远程文件中附加其他值。如果只使用一个变量而不是将另一个文件附加到该文件中,这会起作用吗?谢谢。你好,我根据你的评论更新了我的答案。希望这有帮助。另外:
from fabric.api import (cd, env, run)
from time import time

env.host_string = "127.0.0.1:2222"
env.user = "jfroco"
env.password = "*********"

remote_path = "/home/jfroco/development/fabric1"
remote_file = "test.txt"

variable = "My time is %s" % time()

with cd(remote_path):
    run("echo '%s' >> %s" % (variable, remote_file))