El ID de archivo es un identificador de archivo único que se usa en Windows para identificar un archivo único en un volumen. El ID de archivo funciona de forma similar a un número de iNode que se encuentra en las distribuciones *nix. De modo que un fileId podría usarse para identificar de forma única un archivo en un volumen.
Estaríamos usando un comando que se encuentra en el procesador de comandos de Windows cmd.exe para encontrar el ID de archivo de un archivo. Para acceder/invocar cmd.exe desde python, estaríamos usando la función popen() que se encuentra en la biblioteca *os.
La biblioteca os está preinstalada en la mayoría de las distribuciones de python. De lo contrario, puede instalar la biblioteca ejecutando el siguiente comando en el procesador de comandos de su sistema operativo:
pip install os
* No es necesario usar solo la biblioteca os con el fin de invocar la línea de comando. También se podrían usar alternativas para invocar la línea de comandos (por ejemplo, subprocess.popen() también podría usarse para este propósito).
En este artículo, consultaremos fileId de un archivo en nuestro disco, usando su ruta. Y luego usaría este ID de archivo para obtener la ruta absoluta al archivo.
Python3
# importing popen from the os library from os import popen # Path to the file whose id we would # be obtaining (relative / absolute) file = r"C:\Users\Grandmaster\Desktop\testing.py" # Running the command for obtaining the fileid, # and saving the output of the command output = popen(fr"fsutil file queryfileid {file}").read() # printing the output of the previous command print(output)
Producción:
File ID is 0x00000000000000000001000000000589
Ahora estaríamos usando el fileid de este archivo para obtener la ruta al archivo en el volumen.
Python3
from os import popen # Fileid of the file fileid = "0x00000000000000000001000000000589" # Running the command for obtaining the file path, # of the file associated with the fileid output = popen(fr"fsutil file queryfilenamebyid C:\ {fileid}").read() print(output)
Producción:
A random link name to this file is \\?\C:\Users\Grandmaster\Desktop\testing.py
Donde C:\Users\Grandmaster\Desktop\testing.py es la ruta al archivo
Explicación:
El núcleo de ambos programas se encuentra en las declaraciones popen(fr”fsutil file queryfileid {file}”) y popen(fr”fsutil file querfyfilenamebyid C:\ {fileid}”). La explicación de la cual es: –
- El término fsutil en el comando, es un comando que se encuentra en el procesador de comandos de Windows, que se utiliza para ejecutar comandos específicos de archivos y volúmenes, administración de enlaces permanentes, administración de diario USN, ID de objeto y administración de puntos de análisis.
- El primer archivo de argumento (to fsutil) se usa para obtener acceso a las opciones específicas del archivo en el sistema de archivos. Existen otros argumentos, como USN para realizar operaciones en USN Journal , hardlink para realizar operaciones en enlaces duros del sistema de archivos.
- El segundo argumento queryfileid se usa para obtener el fileId del nombre de ruta proporcionado en el cuarto argumento. Si este archivo no se encuentra en la ruta proporcionada como cuarto argumento, aparece un mensaje negativo Error: el sistema no puede encontrar el archivo especificado. es regresado. Si el archivo existe en la ruta proporcionada, el comando devuelve el ID de archivo del archivo.
- En el segundo código, el segundo argumento es queryfilenamebyid, que funciona de manera opuesta a queryfileid. Toma como tercer argumento el Volumen donde se encuentra el archivo asociado al fileId. Como cuarto argumento, toma el ID de archivo y devuelve la ruta, donde se encuentra el archivo con ese ID de archivo en ese volumen.