Quiero crear una carpeta con enlaces simbólicos a todos los archivos en una estructura de directorio grande. Usé subprocess.call(["cmd", "/C", "mklink", linkname, filename])
primero, y funcionó, pero abrió una nueva ventana de comandos para cada enlace simbólico.Ejecutar comandos de Windows CMD a través de Python
no podía encontrar la manera de ejecutar el comando en segundo plano sin una ventana a aparecer, así que ahora estoy tratando de mantener una ventana CMD abrir y ejecutar comandos a través de la entrada estándar no:
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")
donde
cmdprocess = subprocess.Popen("cmd",
stdin = subprocess.PIPE,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE)
Sin embargo, ahora me sale este error:
File "mypythonfile.py", line 181, in makelink
cmdprocess.stdin.write("mklink " + linkname + " " + fullname + "\r\n")
TypeError: 'str' does not support the buffer interface
Lo que significa esto y cómo puedo resolver esto?
Ah. Eso fue eso, gracias. Ahora todo esto deja de funcionar después de 10 o más archivos ... ¿tal vez también sabes algo de eso? Hice una nueva pregunta en http://stackoverflow.com/questions/5253835/yet-another-python-windows-cmd-mklink-problem-cant-get-it-to-work THX –