Büyük bir dizin yapısındaki tüm dosyalara symlinks içeren bir klasör oluşturmak istiyorum. İlk önce subprocess.call(["cmd", "/C", "mklink", linkname, filename])
'u kullandım ve işe yaradı, ancak her bir sembolik bağlantı için yeni bir komut penceresi açtı.Python aracılığıyla Windows CMD komutlarını çalıştırın
Ben yukarı doğru çıkan bir penceresiz arka planda komut çalıştırma çözemedim, bu yüzden şimdi açık bir CMD penceresini tutmaya çalışıyorum ve stdin yoluyla orada komutları çalıştırın:
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")
File "mypythonfile.py", line 181, in makelink
cmdprocess.stdin.write("mklink " + linkname + " " + fullname + "\r\n")
TypeError: 'str' does not support the buffer interface
ne demek
ve nasıl: nerede
cmdprocess = subprocess.Popen("cmd",
stdin = subprocess.PIPE,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE)
Ancak, ben şimdi bu hatayı alıyorum Bunu çözebilir miyim?
Ah. Öyleydi, teşekkürler. Şimdi bu şey sadece 10 ya da daha fazla dosyadan sonra çalışmayı bırakıyor ... belki de bunun için bir şey biliyor musun? Http://stackoverflow.com/questions/5253835/yet-another-python-windows-cmd-mklink-problem-cant-get-it-to-work THX adresinden yeni bir soru sordum. –