Python os.walk 支持 Unicode/UTF-8?

2024-02-24

我研究过这个问题,似乎Python 2.7默认使用的是ASCII,由于库的原因我无法切换到python 3(默认Unicode)

# -*- coding: utf-8 -*- print u'порядке'

似乎打印得很好??????没有u but: print list(os.walk(ur'c:\somefoler'))回报\u0438\u0442...为什么第一次打印时不可读?我还使用 os.walk 与我不能使用它的变量ur我只是想了解如何使我的以下代码与我使用的任何文件夹/文件语言一起使用 os.walk + 保存到文件似乎并不总是有效????其中西里尔字母

def findit(self,root, exclude_files=[], exclude_dirs=[]):
    exclude_files = (fnmatch.translate(i) for i in exclude_files)
    exclude_files = '('+')|('.join(exclude_files)+')'
    exclude_files = re.compile(exclude_files)
    exclude_dirs = (os.path.normpath(i) for i in exclude_dirs)
    exclude_dirs = (os.path.normcase(i) for i in exclude_dirs)
    exclude_dirs = set(exclude_dirs)
    for root, dirs, files in os.walk(root):
        if os.path.normpath(os.path.normcase(root)) in exclude_dirs:
            # exclude this dir and subdirectories
            dirs[:] = []
            continue
        for f in files:
            if not exclude_files.match(os.path.normcase(f)):
                yield os.path.join(root, f)

filelist = list(findit('c:\\',exclude_files = ['*.dll', '*.dat', '*.log', '*.exe'], exclude_dirs = ['c:/windows', 'c:/program files', 'c:/else']))

当它是一个变量时,我似乎必须使用.decode('utf-8')?为什么不使用unicode,例如u'var'如果它存在,为什么会出现很多次无法转换的异常遇到它并看到很多带有此类错误的答案我很难理解它是否有办法让它正常工作?


try

root = ur'c:\somefoler'
for current,dirs,files in os.walk(root):
    for file in files:
        print file, repr(file)

您应该看到正确的内容(沿着列表中使用的 repr 旁边)...问题是,当您打印列表时,它会打印repr其项目

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python os.walk 支持 Unicode/UTF-8? 的相关文章

随机推荐