Python脚本在Windows中输出字典数据,但在Linux中不输出

我正在编写脚本来检查两个文件之间的ID重叠,在Windows中,它能够从{ID:filepath}的字典中输出ID列表的文件路径。但是,在我的Linux服务器中,没有输出。


CELs=[]

CELpaths = {}

f=open(sys.argv[1], 'r')

data = f.read()

lines = data.split('\n')[1:-1]

for line in lines:

    tabs = line.split('\\')

    CELs.append(tabs[-1])


    CELpaths[(tabs[-1])]=line


yyid = []

f2=open(sys.argv[2], 'r')

data2=f2.read()

lines2=data2.split('\n')


for x in lines2:

    yyid.append(x)


for c in yyid:

    if c in CELpaths:

        print (CELpaths[c])

问题肯定在“ yyid中的c:”段中,在Linux服务器上的Python无法执行“ if C in CELs:”行。我的Linux运行的是Python 2.7,而我的Windows运行的是Python3。这仅仅是版本问题吗?有没有办法修复语法以允许在Linux上输出?


FFIVE
浏览 297回答 1
1回答

慕丝7291255

使用正确的方法逐行读取文件(这通常是遍历文件对象),使用line.strip()(不带参数)删除换行符(无论是什么),并记住这一点,您可能会遇到较少的问题。 Python“ \”是一个转义字符,因此“ \”实际上是“ \”(如果要两个反斜杠,请使用原始字符串ie r"\\")。另外,Python不会保证打开的文件将被关闭,因此您必须注意这一点。未经测试(当然,因为您没有发布源数据),但这主要是脚本的pythonic等效项:def main(p1, p2):    CELs=[]    CELpaths = {}    with open(p1) as f:        # skip first line        f.next()         for line in f:            # remove trailing whitespaces (including the newline character)             line = line.rstrip()             # I assume the `data[1:-1] was to skip an empty last line            if not line:                continue            # If you want a single backward slash,             # this would be better expressed as `r'\'`            # If you want two, you should use `r'\\'.            # AND if it's supposed to be a platform-dependant            # filesystem path separator, you should be using            # `os.path.sep` and/or `os.path` functions.              tabs = line.split('\\')            CELs.append(tabs[-1])            CELpaths[(tabs[-1])] = line    with open(p2) as f:        # no need to store the whole stuff in memory        for line in f:            line = line.strip()            if line in CELpaths:                print (CELpaths[line])if __name__ == "__main__":    import sys    p1, p2 = sys.argv[1], sys.argv[2]    main(p1, p2)我当然不能保证它会解决您的问题,因为您没有提供MCVE ...
打开App,查看更多内容
随时随地看视频慕课网APP