繁体   English   中英

如何在python的同一行打印多个命令行arguments的内容?

[英]How to print the content of multiple command line arguments on the same line in python?

我想在同一行打印多个命令行 arguments (文本文件)的内容,并用空格将它们彼此分隔。 这是我写的代码:


from sys import argv, exit

if len(argv) < 2:
    print("Missing command-line argument")
    exit(1)

argumentList = argv[1:]

for arg in argumentList:
    with open(arg, "r") as f:
        print(f.read())
    f.close()

它在新行上打印每个文本文件,这不是我想要的。 请帮忙!

编辑:谢谢大家的帮助。 我的问题得到了回答!

您必须将每个文件中的文本拆分为行列表并使用zip()创建组(file_1_line1, file_2_line1) , (file_1_line2, file_2_line2)并在一行中打印每个组

W = """
#     #
#  #  #
# # # #
##   ##
#     #
"""

E = """
#######
#
#######
#
#######
"""

all_lines_W = W.split('\n')
all_lines_E = E.split('\n')

for line_w, line_e in zip(all_lines_W, all_lines_E):
    print(line_w, line_e)

结果:

#     # #######
#  #  # #
# # # # #######
##   ## #
#     # #######

对于更多字符/文件,您可以使用列表、 for -loops 和*args

W = """
#     #
#  #  #
# # # #
##   ##
#     #
"""

E = """
#######
#      
#######
#      
#######
"""

text = [W, E, E, E, W, E, E]
text = [char.split('\n') for char in text]

for lines in zip(*text):
    print(*lines)

结果:

#     # ####### ####### ####### #     # ####### #######
#  #  # #       #       #       #  #  # #       #      
# # # # ####### ####### ####### # # # # ####### #######
##   ## #       #       #       ##   ## #       #      
#     # ####### ####### ####### #     # ####### #######

这种类型的文本称为banner

Linux 甚至有特殊的程序可以在屏幕上显示横幅(或在打印机的长纸上打印)

也许您甚至可以找到 Python 模块来显示横幅。 IE。 pyfiglet

如果每个文件中的行数相同,请使用此代码。 但是,一旦 Python 从“with”块退出,文件就会自动关闭。 因此,不要在“with”块中包含关闭的 function。

readlines()方法返回一个列表,其中包含文件中的每一行作为列表项。 并且,结果变量将在每个索引处存储每个文件的列表。 例如。 [file1.readlines()、file2.readlines()、file3.readlines()...]

其中,type(result[0]) 是列表。 然后据此执行操作。

from sys import argv, exit

if len(argv) < 2:
    print("Missing command-line argument")
    exit(1)

argumentList = argv[1:]
result = []
for arg in argumentList:
    with open(arg, "r") as f:
        result.append(f.readlines())

total_lines = len(result[0])
total_items = len(result)

# finding maximum space for each file.
maximum_list = []
for item in range(total_items):
    maximum = 0
    for data in range(total_lines):
        result[item][data] = result[item][data].strip("\n")
        length = len(result[item][data])
        if length > maximum:
            maximum = length
    maximum_list.append(maximum)


for i in range(total_lines):
    count = 0
    while count < total_items:
        data = result[count][i]
        length_difference = maximum_list[count] - len(data) # For printing alignment
        print(data + (" " * length_difference), end=" ")
        count += 1
    print()
    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM