В чем отличие метода os.listdir () между python2.7 и python3.6? Почему я получил ошибку разрешения? - PullRequest
0 голосов
/ 08 марта 2019

Мой скрипт должен сканировать папку сетевого диска, чтобы получить ее содержимое.Я использую метод os.listdir () для простой реализации, затем я получил ошибку разрешения при выполнении с Python 3.x, но он отлично работает с Python 2.7, я хочу знать, в чем отличие реализации этого метода между 3.x и 2.7?Почему в 3.x произошла ошибка разрешения?Я застрял в этой проблеме надолго, и это вынуждает нас вернуться к использованию Python 2.7, но я действительно не хочу использовать 2.7 из-за плохой проблемы кодирования.Ребята, вы знаете, почему?enter image description here enter image description here

1 Ответ

0 голосов
/ 08 марта 2019

Чтобы найти все совпадения, основанные на частичном имени файла / папки, вы можете использовать модуль glob с подстановочным знаком *

import glob
partial_path = r'L:\ALPS_load\alps-mp-p0.mp3*' #notice the wildcard at the end
listing = glob.glob(partial_path)
print(listing)

Вот демонстрация намоя система, которую я чувствую, что должен добавить, учитывая странные обстоятельства, изложенные в вопросе OP.Предполагая, что ваше alps-mp-p0.mp3 на самом деле является частичным именем, os.listdir не должен был работать в Python 3 с совершенно другой ошибкой.(Возможно, это скрытая папка?)

import os
os.listdir(r'C:\Users\paritosh.singh\D')
#Output:
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\paritosh.singh\\D'

Вместо glob

partial_path = r'C:\Users\paritosh.singh\D*'
listing = glob.glob(partial_path)
print(listing)
['C:\\Users\\paritosh.singh\\Desktop',
 'C:\\Users\\paritosh.singh\\Documents',
 'C:\\Users\\paritosh.singh\\Downloads']

Надеюсь, это поможет, но мы можем иметь дело с чем-то еще, чего здесь не хватает.

...