连接本地网络中的另一台计算机

问题描述 投票:1回答:2

我正在尝试使用来自CMD.exe的命令通过python(子进程模块)连接本地网络中的另一台计算机

  • net use \\\\ip\C$ password /user:username
  • copy D:\file.txt \\ip\C$

然后在python中它看起来像下面。但是当我尝试第二个命令时,我得到:

“FileNotFoundError:[WinError 2]”

你遇到过同样的问题吗?有什么办法可以解决吗?

import subprocess as sp

code = sp.call(r'net use \\<ip>\C$ <pass> /user:<username>')
print(code)
sp.call(r'copy D:\file.txt \\<ip>\C$')
python windows subprocess local
2个回答
1
投票

问题是copy是一个内置的,而不是Windows中的真正命令。

那些Windows消息很糟糕,但"FileNotFoundError: [WinError 2]"并不意味着无法访问源文件和目标文件之一(如果copy失败,您将获得具有显式文件名的正常Windows消息)。

这意味着无法访问该命令。

因此,您需要将shell=True添加到子进程调用中以获取对内置函数的访问权限。

但是不要这样做(安全问题,不可移植性),而是使用shutil.copy

除此之外,使用check_call而不是call作为你的第一个命令,就像net use失败一样,其余的也会失败。最好早点失败。

总结一下,这就是我要做的:

import shutil
import subprocess as sp
sp.check_call(['net','use',r'\\<ip>\C$','password','/user:<username>'])
shutil.copy(r'D:\file.txt,r'\\<ip>\C$')

-1
投票

你需要确保你有权添加一个文件。我纠正了共享目录后,我已成功测试。

© www.soinside.com 2019 - 2024. All rights reserved.