解决python执行linux查看文件命令后,因为^@特殊符号导致部分内容不显示的问题

问题现象

文件a的内容如下:

查看第2行到第5行的内容:sed -n ‘2,5p‘ /tmp/test/a

可见在命令行执行,是没有问题的。

在python中使用paramiko模块执行linux命令,主要代码如下:

    def toServer(self, str):
        sys.setdefaultencoding(‘utf-8‘)
        return str.decode(‘utf-8‘).encode(‘GB18030‘)

    def fromServer(self, str):
        sys.setdefaultencoding(‘GB18030‘)
        return str.decode(‘GB18030‘)

    def executeCmd(self, cmd, isErr=False):
        cmd = self.toServer(cmd)
        print ‘exec_command:%s‘ % cmd
        stdin, stdout, stderr = self.ssh.exec_command(cmd)
        out = stdout.read()
        out = self.fromServer(out)
        out = out[:len(out) - 1]
        if isErr == True:
            err = stderr.read()
            err = self.fromServer(err)
            err = err[:len(err) - 1]
            return out, err
        else:
            return out

执行命令:

print sa.executeCmd(‘‘‘sed -n ‘2,5p‘ /tmp/test/a‘‘‘)

输出:

可见,输出第2行时(文件的第3行)是空的!

分析

打断点

查看out完整的值:

可以看到“Selena Gomez:”这一行其实是已经获取到了,但是可以看到前面有空格和空行,不禁让人怀疑这中间是否包含什么特殊的字符。

前面已经用cat命令看过了,但是一切看起来很正常。想起之前碰到的一个问题: shell编程报错:“syntax error near unexpected token `”,就是因为特殊字符^M引起的。

使用vi查看a文件的内容:发现里面包含了大量的^@字符!

^@是一个特殊字符,通过ctrl+V  [email protected]可以敲出来。

所以,问题就出在这,因为这个特殊字符引起!

时间: 2024-10-10 16:31:08

解决python执行linux查看文件命令后,因为^@特殊符号导致部分内容不显示的问题的相关文章

linux 查看文件命令总结

1.cat 查看文件内容 选项-b 空白行不显示行号.-n,空白行显示 2.more 查看文件内容,通过空格键查看下一页 q键退出查看 3.less 和上同,多了方向键(上下回翻) 4.head 默认显示前10行.head -20 /root/install.log 显示20行 5.tail 默认显示末尾10行 还有wc[显示文件的行,单词,字节统计信息] 和 umask等 5.umask命令 当创建一个新的文件或目录时,我们所获得的权限取决于所谓的umask的值,在命令行界面中键入umask,

linux 查看文件命令

cat NAME       cat - concatenate files and print on the standard output SYNOPSIS       cat [OPTION] [FILE]... DESCRIPTION -n, --number              number all output lines [[email protected] ~]# cat -n /etc/inittab      1    #     2    # inittab     

用python执行Linux命令

例1:在python中包装ls命令 #!/usr/bin/env python#python wapper for the ls commandimport subprocesssubprocess.call(["ls","-l"]) 在Linux中执行该命令 [[email protected] python]# python ls.pytotal 8-rwxrwxrwx 1 root root 415 Mar 18 11:40 a.py-rw-r--r-- 1 

linux查看文件相关指令

以下内容整理自以下两篇文章: http://www.cnblogs.com/xilifeng/archive/2012/10/13/2722596.html Linux 查看文件内容的命令 http://www.cnblogs.com/luying--lulu/p/5314963.html Linux下查看文件内容的命令 查看文件的命令有以下几个: cat, tac, more, less, head, tail, tailf,nl. 其总体理解如下: cat   由第一行开始显示档案内容 ta

Linux查看文件编码格式及文件编码转换

Linux查看文件编码格式及文件编码转换 如果你需要在Linux 中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8.下面介绍一下,在Linux中如何查看文件的编码及如何进行对文件进行编码转换. 查看文件编码在Linux中查看文件编码可以通过以下几种方式:1.在Vim 中可以直接查看文件编码 Shell代码 :set fileencoding 即可显示文件编码格式.如果你只是想查看其它编码格

linux cp命令参数及用法详解---linux 复制文件命令cp

linux cp命令参数及用法详解---linux 复制文件命令cp [[email protected]Linux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)[[email protected]linux ~]# cp [options] source1 source2 source3 -. directory参数:-a :相当于 -pdr 的意思:-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身:-

(转载)Linux查看文件编码格式及文件编码转换

Linux查看文件编码格式及文件编码转换 时间:2011-04-08作者:woyoo分类:linux评论:0 我友分享: 新浪微博 腾讯微博 搜狐微博 网易微博 开心网 QQ空间 msn 如果你需要在Linux 中操作windows下的文件 ,那么你可能会经常遇到文件 编码 转换的问题.Windows中默认的文件 格式是GBK(gb2312),而Linux 一般都是UTF-8.下面介绍一下,在Linux 中如何查看 文件 的编码 及如何进行对文件 进行编码 转换. 查看 文件 编码 在Linux

2_Linux 查看文件命令

2.查看文件命令: 2.1.查看文件内容命令:cat 语法:cat  xxxxx 2.2.查看文件内容命令_查看前几行内容:head 语法:head   -n   xxxxx 2.3.查看文件内容命令__查看后几行内容:tail 语法:tail   -n   xxxxx 2.4.查看文件内容命令__文件内容较少:less 语法:less   xxxxx 2.5.查看文件内容命令__文件内容较多:more 语法:more    xxxxx 原文地址:https://www.cnblogs.com/

Linux查看文件大小命令

Linux查看文件大小命令 du命令 (1)du -b filepath 参数-b表示以字节计数 du -b filepath 参数-b表示以字节计数 #示例: $ du -b ~/Downloads/jdk-8u60-linux-x64.tar.gz 181238643 /home/xanarry/Downloads/jdk-8u60-linux-x64.tar.gz (2)du -h filepath 直接得出人好识别的文件大小 du -h filepath 直接得出人好识别的文件大小 #示