2017-09-14 28 views
0

修剪字符串我有这个函数来获取文件类型:在Python 3

def get_file_type(): 
try: 
    cmd = ['/usr/bin/file', '/home/user'] 
    p = Popen(cmd, stdout=PIPE).communicate()[0] 
    p = str(p).split(':')[1:] 
    if len(p) > 1: 
     ' : '.join(p).strip().replace('\\n', '') 
    else: 
     p = p[0].strip().replace('\\n', '') 
    print(p) 
except CalledProcessError: 
    print('unknown') 

但它返回:目录” 期末撇号是不是一个错字,它是让我困扰。我不明白为什么(不在于它困扰着我..;))

谢谢

+1

不可能复制解决这个问题:所以你当你调用str(p)看起来像这样得到什么。重新分配之前'p'的值是多少? –

+1

当len(p)> 1'时,你正在执行一个连接,剥离并替换你*扔掉*的结果。你大概想把它分配给'p'。 – jasonharper

+0

@tobias_k p重新分配之前:[“directory \\ n'”] –

回答

3

的问题是,你正在处理的字节为一个字符串,你使用Python3。

"b'/home/user: directory\\n'" 

你可以通过做p.decode().split而不是str(p).split

+0

好的......! –

+0

我目前正在升级到python3,我认为这是正确的方式来字符串:我知道现在不是。谢谢 ! –