2015-07-09 5 views
0

Я создал сценарий, чтобы дать мне список файлов в каталоге папок. Тем не менее, я иногда получаю эту ошибку. Что это значит?Python os.walk() failing

часть ошибки:

Script failed due to an error: 
Traceback (most recent call last): 
    File "<script>", line 12, in <module> 
    File "C:\Program Files\Nuix\Nuix 6\lib\jython.jar\Lib\os.py", line 309, in walk 
    File "C:\Program Files\Nuix\Nuix 6\lib\jython.jar\Lib\os.py", line 299, in walk 
    File "C:\Program Files\Nuix\Nuix 6\lib\jython.jar\Lib\genericpath.py", line 41, in isdir 
    File "C:\Program Files\Nuix\Nuix 6\lib\jython.jar\Lib\genericpath.py", line 41, in isdir 
java.lang.AbstractMethodError: org.python.modules.posix.PythonPOSIXHandler.error(Ljnr/constants/platform/Errno;Ljava/lang/String;Ljava/lang/String;)V 

    at jnr.posix.BaseNativePOSIX.stat(BaseNativePOSIX.java:309) 

    at jnr.posix.CheckedPOSIX.stat(CheckedPOSIX.java:265) 

    at jnr.posix.LazyPOSIX.stat(LazyPOSIX.java:267) 

Сценарий:

import os 
import codecs 
import shutil 
import datetime 
import sys 


exportpath = 'P:/Output/Export7/{6136BAF2-85BA-4E64-8C11-A2C59398FC02}/' 
tempnativefolder = 'NATIVESOrig' 


for dir, sub, file in os.walk(exportpath + tempnativefolder): 
    for fname in file: 
    #source path 
    source = os.path.join(dir, fname).replace('\\', '/') 
    print source 


print("Natives moved to subfolders") 
+0

Вы проверили наличие причудливых разрешений, странных имен файлов и т. П.? –

+0

"java.lang ..."? Jython? Кажется, это происходит из JVM. – Olaf

+0

Возможно это ?? http://bugs.jython.org/issue2131 – wwii

ответ

0

enter image description here

я узнал, что присутствие этих персонажей (см "ромб с вопросительным знаком" характер в скриншот) в имени файла вызывает проблему. Как только я их заменил, мой скрипт работает. большое спасибо.

0

Что означает ошибка: AbstractMethodError означает, что какой-то код пытался вызвать метод, который не был реализован.

PythonPOSIXHandler инвентарь jnr.posix.POSIXHandler. JRuby также использует JNR, и интерфейс между ними по-разному отличается. Более новая версия JRub от JRuby имеет один дополнительный метод #error(Errno, String, String) и реализация Jython не имеет этого метода, поскольку он скомпилирован против интерфейса, когда метод не существует.

Обычно я вижу эту проблему в другом направлении - где вещи в банке Jython ломают JRuby. Я предполагаю, что это полностью зависит от порядка банок в пути к классам.

Смежные вопросы