【问题标题】:Python - Fabric - Getting filesPython - Fabric - 获取文件
【发布时间】:2016-01-28 20:48:54
【问题描述】:

我正在尝试使用结构编写一个简单的 python 代码,以使用 get() 函数将文件从一个主机传输到另一个主机,尽管我不断收到错误消息:

MacBook-Pro-3:PythonsScripts$ fab get:'/tmp/test','/tmp/test'
[hostname] Executing task 'get'
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/fabric/main.py", line 743, in main
   *args, **kwargs
  File "/Library/Python/2.7/site-packages/fabric/tasks.py", line 387, in execute
    multiprocessing
  File "/Library/Python/2.7/site-packages/fabric/tasks.py", line 277, in _execute
    return task.run(*args, **kwargs)
  File "/Library/Python/2.7/site-packages/fabric/tasks.py", line 174, in run
    return self.wrapped(*args, **kwargs)
  File "/Users/e0126914/Desktop/PYTHON/PythonsScripts/fabfile.py", line 128, in get
    get('/tmp/test','/tmp/test') ***This line repeats many times then last error below***
RuntimeError: maximum recursion depth exceeded

我当前的代码是:

from fabric.api import *
from getpass import getpass
from fabric.decorators import runs_once

env.hosts = ['hostname']
env.port = '22'
env.user = 'parallels'
env.password="password"


def abc(remote_path, local_path):
    abc('/tmp/test','/tmp/')

任何帮助将不胜感激!

【问题讨论】:

    标签: python linux python-2.7 get fabric


    【解决方案1】:

    fabric.api.get 已经是一种方法。当您执行from fabric.api import * 时,您正在导入fabricget。您应该重命名您的 get 函数以避免冲突。

    abc函数内部,你需要调用get

    def abc(p1,p2):
        get(p1, p2)
    

    编辑: 通过fabric执行函数时,参数通过命令行传递 IE。 $ fab abc:string1,string2

    【讨论】:

    • 我尝试将 get 函数更改为“abc”,尽管我仍然收到相同的错误:“Traceback(最近一次调用最后一次):文件”/Library/Python/2.7/site-packages/fabric /main.py”,第 743 行,在 main *args,**kwargs 文件“/Library/Python/2.7/site-packages/fabric/tasks.py”,第 387 行,在执行多处理文件“/Library/Python/ 2.7/site-packages/fabric/tasks.py”,第 277 行,在 _execute return task.run(*args, **kwargs) 文件“/Library/Python/2.7/site-packages/fabric/tasks.py”中,第 174 行,在运行中返回 self.wrapped(*args, **kwargs) TypeError: abc() 恰好需要 2 个参数"
    • 请检查编辑后的答案。我希望这能解决您的问题
    • 我尝试使用 fab abc:'/tmp/test','/tmp/' 以及 *** 并尝试使用双引号,每个字符串都没有引号。虽然,我收到错误“RuntimeError:超出最大递归深度”感谢您的帮助和任何进一步的建议@Yash Mehrotra
    • 您能否编辑您的问题并粘贴最新的格式化代码。
    • 我已经用我当前的代码和错误更新了问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 2015-03-02
    • 2021-09-10
    • 1970-01-01
    • 2022-01-03
    • 2012-07-31
    • 2015-02-07
    相关资源
    最近更新 更多