¿Cómo verifico si un descriptor de archivo dado es válido? Deseo escribir al fd=3
si está disponible; de lo contrario, quiero escribir en stdout. Soy consciente de que podría ajustar cada llamada a os.write
con la declaración try-except, pero me gustaría saber con anticipación si fd=3
es escribible o no.Comprobar si el descriptor de archivo es válido
Respuesta
Usted podría utilizar os.fstat
para determinar si el descriptor de archivo es válido antes de cada escritura, pero se necesita para envolverlo en un try/excepto de todos modos porque los descriptores de archivos no válidos elevarán un OSError
. Probablemente sea mejor que solo cree su propia función de escritura con try/except.
def write(data, fd=3):
try:
os.write(fd, data)
except OSError:
sys.stdout.write(data)
¿Qué hay de tratar de os.write
a fd=3
una vez al inicio (dentro de un try
- bloque except
), y cambiar todo el comportamiento posterior basado en el éxito de esa?
De esta manera no tendrá que envolver todas las llamadas en try
- except
. Por supuesto, esto se romperá si fd=3
deja de ser válido en el medio de su problema (por ejemplo, si se trata de una tubería que se cierra desde el otro extremo).
que iba a tratar de llamar 'os.fstat' y comprobar los bits de modo en lugar de' os.write', para evitar el efecto secundario no deseado de escribir a la fd, pero por lo demás sí, try/except es el perfecto modismo para este problema. "Mejor pedir perdón, etc." –
@Chris Farmiloe: ¿''Os.fstat' detectaría una tubería rota? – NPE
Sí generará una "Operación en archivo cerrado" 'ValueError' creo –
- 1. ¿Cómo comprobar si un archivo es válido UTF-8?
- 2. ¿Cómo comprobar si un puntero es válido?
- 3. ¿Cómo comprobar si el archivo es binario?
- 4. ¿Cómo verificar si un descriptor de archivo dado almacenado en una variable sigue siendo válido?
- 5. cómo comprobar si el archivo pdb es válido para la depuración de un conjunto
- 6. ¿Cómo comprobar si un archivo .tar.gz de Unix es un archivo válido sin descomprimir?
- 7. ¿Cómo determinar si un descriptor de archivo es buscable?
- 8. Comprobar en Javascript si un certificado SSL es válido
- 9. JGIT validate si el repositorio es válido
- 10. Python: ¿Cómo comprobar si una cadena es un IRI válido?
- 11. La forma más fácil de comprobar si una Cadena arbitraria es un nombre de archivo válido
- 12. Comprobar si un archivo es una imagen
- 13. descriptor de socket vs descriptor de archivo
- 14. Compruebe si un archivo PDF es válido (Python)
- 15. NUL descriptor de archivo (isatty es falso)
- 16. Comprobar si el archivo es un enlace simbólico en python
- 17. Comprobar si existe el archivo sin crear
- 18. Comprobar JSON y XML es válido? C#
- 19. ¿Cómo comprobar si el texto de UITextField es un correo electrónico válido?
- 20. Comprobar si es falso
- 21. Determinar si un descriptor de archivo legible es el final de lectura de un conducto
- 22. C++ comprobar si una fecha es válida
- 23. Cómo escribir un cheque en python para ver si el archivo es válido UTF-8?
- 24. ¿Cómo verificar si el valor enum es válido?
- 25. Cómo comprobar si el GUID es cero
- 26. Cómo comprobar si el envío de XMLHttpRequest() admite el archivo
- 27. ¿Cómo verificar si un descriptor de archivo tiene datos disponibles?
- 28. Comprobar si boolean es verdadero
- 29. python cerrar el descriptor del archivo pregunta
- 30. Cómo comprobar si un NSData es válido para su uso en UIImage
Gracias, usaré' os.fstat'. – cpburnz