Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python linux上使用PyQT4/numpy的Unicode可移植性_Python_Unicode_Numpy_Ascii_Pyqt4 - Fatal编程技术网

Python linux上使用PyQT4/numpy的Unicode可移植性

Python linux上使用PyQT4/numpy的Unicode可移植性,python,unicode,numpy,ascii,pyqt4,Python,Unicode,Numpy,Ascii,Pyqt4,我正在用pyQT4和numpy开发一个多平台应用程序,实际上它在我的linux系统(Xubuntu 12.04)上不起作用,即使它在Windows7上看起来很好。因此,问题来自我的import files方法(它位于PyQT4类中): 这就是我得到的错误: data_fichier = np.genfromtxt("%s" %aa,delimiter=';',skip_header=35,usecols=[8]) File "/usr/lib/python2.7/dist-p

我正在用pyQT4和numpy开发一个多平台应用程序,实际上它在我的linux系统(Xubuntu 12.04)上不起作用,即使它在Windows7上看起来很好。因此,问题来自我的import files方法(它位于PyQT4类中):

这就是我得到的错误:

     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的简单函数启动该方法时 同学们,它工作得很好,所以我怀疑。)

谢谢


Lem

似乎
loadtxt
方法需要
str
,而不是
unicode
,因为它试图对其进行解码。在您的情况下,glob返回unicode字符串,因此请尝试对文件名进行编码:

filenames = map(str, filenames)

甚至:

def safe_str(s):
    if isinstance(s, unicode):
        return s.encode('utf-8')
    return s
filenames = map(safe_str, filenames)

非常感谢…非常简单!现在它可以正常工作了。但我不明白为什么我需要在Linux系统上而不是在Windows7上这样做。可能是关于不同的python版本吗?出于某种原因,
abs\u路径
文件夹列表
在linux系统上是unicode的,而
glob
返回了unicode的列表。我必须查看代码的其余部分才能调试它。。。
filenames = map(lambda f: f.encode('utf-8'), filenames)
def safe_str(s):
    if isinstance(s, unicode):
        return s.encode('utf-8')
    return s
filenames = map(safe_str, filenames)