Я работаю над win 7, с Python 2.7.10 (32bit).python glob игнорирует каталоги
Я хочу найти все файлы *.txt
в каталоге через glob. В некоторых случаях glob.glob('some\path\*.txt')
дает пустую строку, несмотря на существующие файлы в данных каталогах. Это особенно верно, если path
- все строчные или числовые. В качестве минимального примера у меня есть две папки a
и A
на моем C:
диск, держащий один файл Test.txt
.
import glob
files1 = glob.glob('C:\a\*.txt')
files2 = glob.glob('C:\A\*.txt')
дает
files1 = []
files2 = ['C:\\A\\Test.txt']
Если это дизайн, есть любое другое имя каталога, что приводит к такому неожиданному поведению?
Таким образом, чтобы быть в безопасности, я дважды каждую обратную косую черту! Отлично, решил. Есть ли список специальных символов? – Dschoni
При использовании строковых путей в Windows лучше всего использовать [raw string literals] (https://docs.python.org/2/reference/lexical_analysis.html#string-literals) и не помнить, какие escape-файлы необходимы. Например, использование 'r'c: \ a \ *. Txt'' сохраняется как' c: \\ a \\ *. Txt''. Возможно, вам даже будет полезно использовать косые черты '' c:/a/*. Txt''; Я думаю, что Windows принимает косые черты, за исключением CMD.EXE – msw
@Dschoni: Я добавил ссылку на страницу документации Python о строковых литералах. Эта страница включает в себя таблицу всех распознанных управляющих последовательностей. – 6502