gpt4 book ai didi

python - 通过 Python 运行 Windows CMD 命令

转载 作者:可可西里 更新时间:2023-11-01 13:47:46 25 4
gpt4 key购买 nike

我想创建一个文件夹,其中包含指向大型目录结构中所有文件的符号链接(symbolic link)。我首先使用了 subprocess.call(["cmd", "/C", "mklink", linkname, filename]),它起作用了,但为每个符号链接(symbolic link)打开了一个新的命令窗口。

我无法弄清楚如何在不弹出窗口的情况下在后台运行命令,所以我现在试图让一个 CMD 窗口保持打开状态并通过标准输入在那里运行命令:

def makelink(fullname, targetfolder, cmdprocess):
linkname = os.path.join(targetfolder, re.sub(r"[\/\\\:\*\?\"\<\>\|]", "-", fullname))
if not os.path.exists(linkname):
try:
os.remove(linkname)
print("Invalid symlink removed:", linkname)
except: pass
if not os.path.exists(linkname):
cmdprocess.stdin.write("mklink " + linkname + " " + fullname + "\r\n")

在哪里

cmdprocess = subprocess.Popen("cmd",
stdin = subprocess.PIPE,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE)

但是,我现在得到这个错误:

File "mypythonfile.py", line 181, in makelink
cmdprocess.stdin.write("mklink " + linkname + " " + fullname + "\r\n")
TypeError: 'str' does not support the buffer interface

这是什么意思,我该如何解决?

最佳答案

Python 字符串是 Unicode,但您写入的管道仅支持字节。尝试:

cmdprocess.stdin.write(("mklink " + linkname + " " + fullname + "\r\n").encode("utf-8"))

关于python - 通过 Python 运行 Windows CMD 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5253206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com