Python, ошибка os.listdir()
Я пишу эту процедуру
def get_special_paths(dir):
detected_paths = []
paths = os.listdir(dir)
for path in paths:
if path == r'__\w+__':
detected_paths.append(path)
for element in detected_paths:
index = detected_path.index(element)
detected_paths[index] = os.path.abspath(element)
return detected_paths
и это вызывает ошибку типа, как показано ниже:
Traceback (most recent call last):
File"copyspecial.py", line 65, in <module>
get_special_paths(dir)
File"copysepcial.py", line 23, in get_special_paths
paths = os.listdir(pathname)
TypeError: coercing to Unicode: need string or buffer, builtin_function_or_method found
В чем смысл этой ошибки и как ее исправить? Заранее спасибо:)
2 ответа
Решение
Похоже, вы прошли dir
встроенная функция к get_special_paths
>>> dir
<built-in function dir>
>>> os.listdir(dir)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: coercing to Unicode: need string or buffer, builtin_function_or_method found
Передайте путь как строку.
get_special_paths('/path/to/dir')
Кстати, не используйте dir
как имя переменной. Это будет тень выше dir
функция.
Может быть, потому, что global_path
здесь не определено:
for element in detected_paths:
index = detected_path.index(element) # Here detected_path is undefined
сделай это global_paths
и попробовать:
for element in detected_paths:
index = detected_paths.index(element)