2

xonsh在shell 中循环文本文件行的最佳方法是什么?

(A)目前我正在使用

for l in !(cat file.txt): 
    line = l.strip()
    # Do something with line...

(B)当然,还有

with open(p'file.txt') as f:
    for l in f:
        line = l.strip()
        # Do something with line...

我使用 (A) 是因为它更短,但还有什么更简洁的吗? 最好将其折叠成循环l.strip()

注意:我的主要兴趣是简洁(在小字符数的意义上) - 如果这有助于原因,也许使用 xonsh 的特殊语法功能。

4

2 回答 2

2

您可以使用以下方法折叠str.strip()到循环中map()

(一个):

for l in map(str.strip, !(cat file.txt)):
    # Do something with line...

(乙):

with open('file.txt') as f:
    for l in map(str.strip, f):
        # Do something with l..
于 2018-11-12T00:55:19.943 回答
1

最少的字符数甚至可能涉及依赖您的 python 实现在执行结束时释放文件,而不是显式地执行它:

for l in map(str.strip, open('file.txt')):
    # do stuff with l

或使用 p'' 字符串在 xonsh 中创建路径(这确实会正确关闭文件):

for l in p'file.txt'.read_text().splitlines():
    # do stuff with l

splitlines()已经删除了换行符,但没有删除其他空格。

于 2018-11-12T01:27:34.280 回答