PermissionError: [Errno 13] en Python

83

Estoy empezando a aprender algo de Python y tengo un problema como se indica a continuación:

a_file = open('E:\Python Win7-64-AMD 3.3\Test', encoding='utf-8')

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    a_file = open('E:\Python Win7-64-AMD 3.3\Test', encoding='utf-8')
PermissionError: [Errno 13] Permission denied: 'E:\\Python Win7-64-AMD 3.3\\Test\

Parece ser un error de permiso de archivo, si alguien puede arrojar algo de luz, sería muy apreciado.

NOTA: no estoy seguro de cómo funcionan los archivos de Python y Windows, pero estoy conectado a Windows como administrador y la carpeta tiene permisos de administrador.

Intenté cambiar las .exepropiedades para ejecutarlas como administrador.

BenniMcBeno
fuente
7
¿Es Testun archivo o una carpeta?
Joachim Isaksson
1
@JoachimIsaksson Definitivamente es una carpeta, como podemos ver al final de la línea de error. Haz de eso una respuesta.
Oleh Prypin
La prueba es una carpeta, el documento que sigo dice que puedo abrir un documento de texto usando la siguiente sintaxis a_file = open ('E: \ Python Win7-64-AMD 3.3 \ Test \ a.txt', encoding = 'utf-8' ) usando esta sintaxis así como a_file = open ('E: \ Python Win7-64-AMD 3.3 \ Test', encoding = 'utf-8') me da el mismo error.
BenniMcBeno
Por cierto, recuerde usar cuerdas primas para las rutas de windows, o te pica mal si un nombre de subcarpeta debe suceder para empezar no bo cualquier otra carta que puede ser parte de una secuencia de escape ...
Tim Pietzcker
ok, entonces el archivo estaba en una unidad flash y el controlador flash era FAT32 y mi HD es NTFS, así que hubo conflictos de formato> <hacerlo localmente funciona bien, gracias chicos
BenniMcBeno

Respuestas:

65

Al hacer;

a_file = open('E:\Python Win7-64-AMD 3.3\Test', encoding='utf-8')

... está intentando abrir un directorio como un archivo, que puede fallar (y en la mayoría de los sistemas de archivos que no son UNIX).

Sin embargo, tu otro ejemplo;

a_file = open('E:\Python Win7-64-AMD 3.3\Test\a.txt', encoding='utf-8')

debería funcionar bien si solo tiene el permiso a.txt. rSin embargo, es posible que desee utilizar una cadena sin formato (con prefijo) para asegurarse de que su ruta no contenga ningún carácter de escape como el \nque se traducirá a caracteres especiales.

a_file = open(r'E:\Python Win7-64-AMD 3.3\Test\a.txt', encoding='utf-8')
Joachim Isaksson
fuente
a ok Roger por suerte para mí estoy casi siempre en Linux excepto ahora lol> <, entonces, ¿a quién sugieres que lo haga? por cierto Test es una carpeta / directorio
BenniMcBeno
2
@bennyboy ¿Depende de lo que intentas lograr abriendo el directorio en lugar del archivo ...?
Joachim Isaksson
15

Para mí, estaba escribiendo en un archivo que se abre en Excel.

Kai Wang
fuente
Necesito escribir en un archivo de Excel abierto (ya que tiene una macro que ejecuta la secuencia de comandos de Python) ¿cómo se hace?
vencedor
Mis pandas fallaron al abrir (nombre de archivo, "rb"), cerrar Excel resolvió el problema, pero ¿por qué?
Niels Tolstrup
0

Encontré este problema cuando intenté ejecutar accidentalmente mi módulo de Python a través del símbolo del sistema mientras mi directorio de trabajo estaba en C:\Windows\System32lugar del directorio habitual desde el que ejecuto mi módulo de Python

Toldry
fuente