[英]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.