¿Hay alguna forma de modificar la información de estadísticas como MTime o CTime manualmente en Python o cualquier idioma?

StackOverflow https://stackoverflow.com/questions/5803765

  •  24-10-2019
  •  | 
  •  

Pregunta

Estoy probando el siguiente código:

os.stat(path_name)[stat.ST_CTIME] = ctime

Sin embargo, esto da el siguiente error:

exceptions.TypeError: 'posix.stat_result' object does not support item assignment

¿Hay de todos modos para modificar ctime?

¡Gracias!

¿Fue útil?

Solución

os.utime(filename, timetuple) se puede usar para establecer el atime y el tiempo de un archivo. Hasta donde sé, no hay forma de modificar el CTIME desde Userland sin recurrir a hacks como jugar con el reloj o la edición directa del sistema de archivos (que realmente no recomiendo), y esto es cierto para cualquier lenguaje de programación (Python , Perl, C, C ++ ...): Son cosas internos del sistema operativo, y no quieres tocarlo.

Ver, por ejemplo, en la documentación del touch comando (http://www.delorie.com/gnu/docs/fileutils/fileutils_54.html):

Aunque Touch proporciona opciones para cambiar dos de las veces, los tiempos del último acceso y modificación, de un archivo, en realidad también hay una tercera: el tiempo de cambio de inodoro. Esto a menudo se conoce como el CTIME de un archivo. El tiempo de cambio de inodo representa el momento en que la metainformación del archivo cambió por última vez. Un ejemplo común de esto es cuando los permisos de un archivo cambian. Cambiar los permisos no accede al archivo, por lo que el atime no cambia, ni modifica el archivo, por lo que el mtime no cambia. Sin embargo, algo sobre el archivo en sí ha cambiado, y esto debe tenerse en cuenta en alguna parte. Este es el trabajo del campo CTIME. Esto es necesario, de modo que, por ejemplo, un programa de copia de seguridad pueda hacer una nueva copia del archivo, incluido el nuevo valor de permisos. Otra operación que modifica el CTIME de un archivo sin afectar a los demás está cambiando el nombre. En todo caso, No es posible, en operaciones normales, que un usuario cambie el campo CTIME a un valor especificado por el usuario.

Otros consejos

GNU Stroke implementa el truco del tiempo de cambio del sistema para cambiar CTIME de un archivo. Si eso es lo que quieres, Gnu Stroke lo hace por ti: http://stroke.sourceforge.net/.

No hay una forma directa de establecer el tiempo de cambio, se actualiza cada vez que cambia la información de inodo, como la propiedad, el recuento de enlaces, el modo, etc.

Intente configurar el modo en el modo ya establecido:

os.chmod(path_name, os.stat(path_name)[stat.ST_MODE])
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top