私はpyQT4とnumpyでマルチプラットフォームアプリケーションを開発していますが、実際には私のLinuxシステム(Xubuntu 12.04)では動作しませんが、Windows 7ではうまく動作しているようです. PyQT4 クラス) :
def import_folder(self,abs_path,folder_list):
for folder_i in folder_list:
filenames = glob.glob("%s/%s/*.txt" %( abs_path,folder_i ))
aa =list(filenames)[1]
print filenames
data_fichier = np.genfromtxt("%s" %(aa),delimiter=';',skip_header=35,usecols=[8])
data_fichier2 = np.zeros((data_fichier.shape[0],))
そして、これは私が得るエラーです:
data_fichier = np.genfromtxt("%s" %aa,delimiter=';',skip_header=35,usecols=[8])
File "/usr/lib/python2.7/dist-packages/numpy/lib/npyio.py", line 1241, in genfromtxt
fhd = iter(np.lib._datasource.open(fname, 'rbU'))
File "/usr/lib/python2.7/dist-packages/numpy/lib/_datasource.py", line 145, in open
return ds.open(path, mode)
File "/usr/lib/python2.7/dist-packages/numpy/lib/_datasource.py", line 472, in open
found = self._findfile(path)
File "/usr/lib/python2.7/dist-packages/numpy/lib/_datasource.py", line 315, in _findfile
filelist += self._possible_names(self.abspath(path))
File "/usr/lib/python2.7/dist-packages/numpy/lib/_datasource.py", line 364, in abspath
splitpath = path.split(self._destpath, 2)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 14: ordinal not in range(128)
「ファイル名」変数を出力しました:
[u'/home/*****/Documents/Plate_test/Track-Arousal_experiment_24_06_13_track_1-Trial 2-7-Subject 1.txt', u'/home/*****/Documents/Plate_test/Track-Arousal_experiment_24_06_13_track_1-Trial 2-5-Subject 1.txt']
したがって、問題は Unicode モード (リスト要素の先頭にある "u") に起因します。そして、Linux システムでこの Unicode モードを取得する理由がまったくわかりません。それを削除して「通常」モードに切り替える方法を教えてください(用語については申し訳ありませんが、私は専門家ではありません)。(または私の問題に関する他のアイデア)。
(ちなみに、このメソッドを PyQT クラスを使用せずに単純な関数として起動した場合、うまく機能するので、それを疑っています。)
ありがとう、
レム