社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何在python中在同一行上打印多个命令行参数的内容?

Skarbietae • 3 年前 • 1580 次点击  

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


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()

它将每个文本文件打印到一行,这不是我想要的。求求你,救命!

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129697
 
1580 次点击  
文章 [ 2 ]  |  最新文章 3 年前
furas
Reply   •   1 楼
furas    3 年前

您必须将每个文件中的文本拆分为行列表并使用 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 -循环和 *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模块来显示横幅。比如。 pyfiglet


编辑:

使用来自文件的数据的版本

from sys import argv, exit

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

# --- read ---

text = []

for arg in argv[1:]:
    with open(arg, "r") as f:
        #text.append( f.read() )
        text.append( f.read().split('\n') )

# --- print ---

#text = [char.split('\n') for char in text]

for lines in zip(*text):
    print(*lines)
    #print( " ".join(lines) )
abdeali004
Reply   •   2 楼
abdeali004    3 年前

如果每个文件中的行数相同,请使用此代码。然而,一旦Python退出 带着 块时,文件将自动关闭。所以 不要在“with”块中包含close函数。

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

其中,类型(结果[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()