类型错误:不能连接“海峡”和“名单”对象
问题描述:
我有一个代码片段,其工作原理:类型错误:不能连接“海峡”和“名单”对象
p = subprocess.Popen('psftp servername'.split(),stdin=subprocess.PIPE, tdout=subprocess.PIPE, shell=True)
p.stdin.write('lcd P:\\ORACLE_UNIX\\Development\n')
p.stdin.write('get //opt//jboss//current//server//default//conf//DMS.properties\n')
p.stdin.write('bye\n')
p.stdout.close()
p.stdin.close()
但是,当我有一个变量集(我会参考其他地区的服务器) :
devserv='servername'
p = subprocess.Popen('psftp' +devserv.split(),stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
p.stdin.write('lcd P:\\ORACLE_UNIX\\Development\n')
p.stdin.write('get //opt//jboss//current//server//default//conf//DMS.properties\n')
p.stdin.write('bye\n')
p.stdout.close()
p.stdin.close()
...我总是得到类型错误:不能连接 '海峡' 和 '名单' 对象。为什么?
答
我认为你需要
('psftp' +devserv).split()
您需要先构建字符串,然后调用已完成的字符串split
更换
'psftp' +devserv.split()
。
答
devserver.split()
返回一个列表,这就是为什么你看到这个错误 - 你试图连接一个字符串与列表。
你可以代替试试这个:
p = subprocess.Popen(['psftp', devserver], stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
.split()
不再需要,因为你已经拥有了CMD和args作为单独的字符串。
这已经解决了我的问题,非常感谢您的帮助 – geekcomputers