如何在python中正确获取中文目录中的文件名?

时间:2017-04-09 04:10:58

标签: python r unicode

如何在Python中使用中文获取当前工作目录中的名称列表?

例如,在我的演示文件夹中,我有四个文件:“folder_中文”“folder_a”“folder_b”“folder_c”

screenshot

在R中

我可以使用以下命令来实现此目的:

Sys.setlocale(category = "LC_ALL", locale = "zh_cn.utf-8")
setwd("~/desktop/example")
filenames=list.files()
filenames
"folder_中文" "folder_a"    "folder_b"    "folder_c" 

但是我没能在使用Anaconda的Python中实现这一点,尽管如果我不将其分配给文件名,输出看起来很好(见下文);文件名中的中文不正确。

# -*- coding: utf-8 -*-
import os
os.chdir('/Users/../Desktop/example')
! ls
filenames = ! ls
filenames
folder_a      folder_b      folder_c      folder_中文

['folder_a', 'folder_b', 'folder_c', 'folder_\xe4\xb8\xad\xe6\x96\x87']

但如果我继续输入

print(filenames)
print(filenames[3])

如果我提取这个特定元素并直接打印,就可以观察到中文。

['folder_a', 'folder_b', 'folder_c', 'folder_\xe4\xb8\xad\xe6\x96\x87']
folder_中文

我要强调的最后一点是,如果我直接输入中文,只有在我以明确的方式使用 print 时才会正确看到中文。因此无论有没有 print 都会对它产生重大影响。

print('中文')
'中文'
中文
Out[65]: '\xe4\xb8\xad\xe6\x96\x87'

我的操作系统是Mac El Capitan(10.11.5),Anaconda的版本是:

2.7.13 |Anaconda custom (x86_64)| (default, Dec 20 2016, 23:05:08)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]

1 个答案:

答案 0 :(得分:0)

我回忆一下我在Python2中处理中文字符的问题。 Python3没有问题。我相信你需要在〜.bash_profile中添加以下内容:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

然后:

source ~/.bash_profile