2017-04-09 17 views
0

如何在Python中適當地獲取當前工作目錄中的名稱列表中文如何在python中正確地使用中文獲取文件名?

例如,在我的演示文件夾中,我有四個文件: 「folder_中文」 「folder_a」 「folder_b」 「folder_c」

screenshot

在RI

可以使用下面的命令來實現這個:

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

但我失敗在Python與蟒蛇來實現這一點,但如果我不阿西gn它的文件名,輸出看起來很好(見下文);中文文件名不正確。

# -*- 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('中文') 
'中文' 
中文 
Out[65]: '\xe4\xb8\xad\xe6\x96\x87' 

我的操作系統是Mac的EI匹(10.11.5)和森蚺的版本是:

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

當查看列表或一個調試器或在交互提示字符串,Python的顯示'再版()'的字符串,它使用非ASCII碼的轉義碼。 'print'顯示字符串的'str()'。內容相同,只是它顯示的方式:'中文'=='\ xe4 \ xb8 \ xad \ xe6 \ x96 \ x87'。你必須打印它才能正確地看到它。請注意,這是Python 2特有的。 Python 3默認爲Unicode字符串,即使在'repr()'情況下也會嘗試顯示它們。 –

+0

我建議你使用內置的python函數,例如。 'os.listdir()'將返回目錄中的文件列表。 – roeland

+0

是的。 'print str('中文')'返回與'print'中文''相同的內容,但是如果我只輸入'str'('中文')',我就不會明白沒有答案的答案我作爲Python 2提出的具體問題在某種程度上與中文不兼容?我也注意到'os。 listdir()'也不能解決兼容性問題。 – johnsonzhj

回答

0

我想起一個問題,我與有關中國字符Python2幫助。 Python3沒有這個問題。我相信你需要將以下添加到您〜.bash_profile文件:

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

然後:

source ~/.bash_profile 
+0

是否等同於輸入'!導出LC_ALL = en_US.UTF-8'和'!在Jupyter中輸出LANG = en_US.UTF-8'?我試了一下,並用'zh_CN.UTF-8'選項測試了命令。一切都不起作用。 – johnsonzhj

相關問題