2017-08-09 21 views
0

Ubuntu的shell脚本:使用>>输出txt文件是不是我用下面<code>python</code>脚本来创建一个脚本<code>shell</code>打开

with open("decode_JOURNAL2017.sh", "a") as myfile: 
    levels_no = 16 
    #myfile.write("#!/bin/bash\n") 
    for x in range(0, levels_no): 
     myfile.write("/home/zinonas/SHM-12.3/bin/TAppDecoderStatic -b /home/zinonas/str/pirkagia_10b_lowdelay_P.bin -olsidx "+str(x)+" -o"+str(x)+" /home/zinonas/decode/pirkagia_10b_lowdelay_P_level_"+str(x)+"_dec.yuv >> /home/zinonas/decode/pirkagia_10b_lowdelay_P_level_"+str(x)+"_dec.txt\n") 

然后我转移下列创建的脚本到ubuntu服务器:

/home/zinonas/SHM-12.3/bin/TAppDecoderStatic -b /home/zinonas/str/pirkagia_10b_lowdelay_P.bin -olsidx 0 -o0 /home/zinonas/decode/pirkagia_10b_lowdelay_P_level_0_dec.yuv >> /home/zinonas/decode/pirkagia_10b_lowdelay_P_level_0_dec.txt 
/home/zinonas/SHM-12.3/bin/TAppDecoderStatic -b /home/zinonas/str/pirkagia_10b_lowdelay_P.bin -olsidx 1 -o1 /home/zinonas/decode/pirkagia_10b_lowdelay_P_level_1_dec.yuv >> /home/zinonas/decode/pirkagia_10b_lowdelay_P_level_1_dec.txt 
/home/zinonas/SHM-12.3/bin/TAppDecoderStatic -b /home/zinonas/str/pirkagia_10b_lowdelay_P.bin -olsidx 2 -o2 /home/zinonas/decode/pirkagia_10b_lowdelay_P_level_2_dec.yuv >> /home/zinonas/decode/pirkagia_10b_lowdelay_P_level_2_dec.txt 

当我运行它,将创建txt文件,但是当我双击一个打开它,我得到这个消息:

Can't create file 'C:\Users\admin\AppData\Local\Temp\scp43940\home\zinonas\decode\pirkagia_10b_lowdelay_P_level_0_dec.txt 
'. 
System Error. Code: 123. 
The filename, directory name, or volume label syntax is incorrect 

我甚至不能通过winscp将此txt文件传输到我的Windows桌面。

yuv文件正常工作!

编辑:当我将shell脚本的内容复制/粘贴到终端时,txt文件工作正常。 编辑2:当我重新命名该文件并删除txt,然后重新添加,文件正常打开...

你知道如何解决这一问题?

预先感谢您!

+0

@molbdnilo当我尝试从服务器打开其他txt文件时,winscp会正确打开它们。我相信这个错误可能在'shell'脚本中。 – zinon

回答

0

我找到了解决办法。

在创建shell脚本,txt文件我的名字旁边:

... 
>> /home/zinonas/decode/pirkagia_10b_lowdelay_P_level_"+str(x)+"_dec.txt\n") 

因此新行字符\n接下来要txt。这是问题所在。我在他们之间增加了一个新的空间,并解决了问题!

我的新代码读取:

... 
>> /home/zinonas/decode/pirkagia_10b_lowdelay_P_level_"+str(x)+"_dec.txt \n") 
1

您可能在脚本文件中有Windows行结尾 - 至少这就是为什么我从错误信息中得到,如果您正确粘贴它。

运行dos2unix scriptFilename.shsed -i 's/\r//' scriptFilename.sh从脚本中删除Windows行结束符。


对于Python脚本参考这个问题&答:How to write Unix end of line characters in Windows using Python

0

是否有一个“流氓” CR在文件名末尾?

相关问题