从python文本文件中读取文件名(双反斜杠问题)

2024-05-15 16:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从文本文件中读取文件列表。我使用以下代码来执行此操作:

filelist = input("Please Enter the filelist: ")
flist = open (os.path.normpath(filelist),"r")
fname = []
for curline in flist:
    # check if its a coment - do comment parsing in this if block
    if curline.startswith('#'): 
        continue
    fname.append(os.path.normpath(curline));
flist.close() #close the list file

# read the slave files 100MB at a time to generate stokes vectors
tmp = fname[0].rstrip()
t = np.fromfile(tmp,dtype='float',count=100*1000)

这非常好,我得到了以下数组:

^{pr2}$

问题是'\'字符符被转义,字符串中有一个尾随的'\n'。我使用了str.rstrip()去掉了'\n'-这行得通,但留下了两个反斜杠的问题。在

我使用了以下方法来尝试摆脱这些问题:

  1. 使用了codecs.unicode_escape_decode(),但是我得到了这个错误: UnicodeDecodeError: 'unicodeescape' codec can't decode bytes in position 56-57: malformed \N character escape。显然这不是正确的方法,因为我只想解码反斜杠,而不是字符串的其余部分。

  2. 这也不起作用:tmp = fname[0].rstrip().replace(r'\\','\\');

没有办法让readline()读取原始字符串吗?在


更新:

基本上我有一个有4个文件名的文本文件,我想用python打开和读取数据。文本文件包含:

H:\Shaunak\TerraSAR_X-Sep2012-Glacier_Velocity_Gangotri\NEST_oregistration\Glacier_coreg_Cnv\i_HH_mst_08Oct2012.bin
H:\Shaunak\TerraSAR_X-Sep2012-Glacier_Velocity_Gangotri\NEST_oregistration\Glacier_coreg_Cnv\i_HH_mst_08Oct2012.bin
H:\Shaunak\TerraSAR_X-Sep2012-Glacier_Velocity_Gangotri\NEST_oregistration\Glacier_coreg_Cnv\q_HH_slv3_08Oct2012.bin
H:\Shaunak\TerraSAR_X-Sep2012-Glacier_Velocity_Gangotri\NEST_oregistration\Glacier_coreg_Cnv\q_VV_slv3_08Oct2012.bin 

我想逐个打开每个文件并从中读取100MB的数据。 当我使用这个命令时:np.fromfile(flist[0],dtype='float',count=100)我得到了这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'H:\\Shaunak\\TerraSAR_X-Sep2012-Glacier_Velocity_Gangotri\\NEST_oregistration\\Glacier_coreg_Cnv\\i_HH_mst_08Oct2012.bin'

更新

完全回溯:

Please Enter the filelist: H:/Shaunak/TerraSAR_X- Sep2012-Glacier_Velocity_Gangotri/NEST_oregistration/Glacier_coreg_Cnv/filelist.txt
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "G:\WinPython-32bit-3.3.2.3\python-3.3.2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 581, in runfile
    execfile(filename, namespace)
  File "G:\WinPython-32bit-3.3.2.3\python-3.3.2\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 41, in execfile
    exec(compile(open(filename).read(), filename, 'exec'), namespace)
  File "H:/Shaunak/Programs/Arnab_glacier_vel/Stokes_generation_2.py", line 28, in <module>
    t = np.fromfile(tmp,dtype='float',count=100*1000)
FileNotFoundError: [Errno 2] No such file or directory: 'H:\\Shaunak\\TerraSAR_X-Sep2012-Glacier_Velocity_Gangotri\\NEST_oregistration\\Glacier_coreg_Cnv\\i_HH_mst_08Oct2012.bin'
>>> 

Tags: inbinhhfilenestglacierfilelistvelocity
1条回答
网友
1楼 · 发布于 2024-05-15 16:23:29

正如@volcano所说,双斜杠只是一种内部表现。如果你把它打印出来,它们就不见了。同样,如果你把它写到文件中,只有一个'\'。在

>>> string_with_double_backslash = "Here is a double backslash: \\"
>>> print(string_with_double_backslash)
Here is a double backslash: \

相关问题 更多 >