python-3.x - 将变量传递给函数返回空列表
问题描述
我有一个似乎不喜欢我传递的变量的函数。例如:
hostname = 'server_1.local'
domain = 'mydomain.ca'
def get_env(hostname, domain):
www_path = ["ls /var/www/", domain]
command = ''.join(www_path)
print(hostname, domain, command)
server_response = subprocess.Popen(["ssh" , hostname, command], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
envfile_path_list = server_response.stdout.readlines()
return envfile_path_list
print(get_env(hostname, domain))
我得到的结果是主机名、域、命令很好,但列表为空
sever_1.local mydomain.ca ls /var/www/mydomain.ca
[]
但是,如果我在函数中传递完整的命令,subprocess.Popen()
我会得到预期的结果
def get_env(hostname, domain):
www_path = ["ls /var/www/", domain]
command = ''.join(www_path)
print(hostname, domain, command)
server_response = subprocess.Popen(["ssh" , hostname, "ls /var/www/mydomain.ca/"], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
envfile_path_list = server_response.stdout.readlines()
return envfile_path_list
print(get_env(hostname, domain))
sever_1.local mydomain.ca ls /var/www/mydomain.ca
['archive\n', 'site\n', 'verification\n', 'app\n']
任何想法?
解决方案
我注意到在版本 1 中 command = "ls /var/www/mydomain.ca" 但在版本 2 中它是 "ls /var/www/mydomain.ca/" (注意斜线 / )并且因为ls命令适用目录不是文件——我想这就是原因。
推荐阅读
- javascript - Javascript 在数组中切换显示
- python - 如何在 Python 中的字符串列表末尾删除多个子字符串?
- android - 用于以编程方式更新 apk 的 Xamarin 应用程序
- python - 列出了制作图形可视化程序的问题
- xamarin - Xamarin.Forms 应用程序不会在没有清理/重建解决方案的情况下应用来自第二个项目程序集的代码更改
- python - 在忽略大小写的情况下按多列对数据框进行排序
- python - 无法将 dicts 字符串加载到 JSON 中
- python - 获取 ValueError:在尝试运行 Adjt 时发现样本数量不一致的输入变量:[248, 1239]。R 平方和 RMSE
- xml - 将订单发布到 Prestashop API 时出现 500 内部服务器错误
- php - 如何使用 PHP 从我自己的 Instagram 获取图像?