網站首頁 編程語言 正文
前言:
在每一門編程語言中的都會有輸入輸出流這一說,通過輸入輸出流可以使我們寫的程序與外界進行交互。當然了我們寫程序的目的也就是對數據流進行處理,處理之后或對其進行保存,或將其釋放。今天主要學習一下Python中的輸入輸出流,會對標準輸入輸出流、文件輸入輸出流展開介紹。
一、獲取命令行參數
在執行Python
腳本的時候可以對腳本從命令行傳遞參數,然后在腳本內接收,然后將每一個參數進行分離。
1.sys.argv
使用方法第一步:
import sys
使用方法第二步:
temp=sys.argv[1]
【在這里解釋一下哦,sys.argv序列中索引0對應的是Python腳本名,剩下的才是傳進來的變量】如下代碼將會打印Python文件名與你傳進去的參數(不傳參接收的話會報錯)
import sys n1=sys.argv[0] n2=sys.argv[1] print(n1,type(n1)) print(n2,type(n2))
2.argparse
這個模塊是解析命令行參數,生成幫助信息的Python
標準模塊
第一步(導包):
import argparse
第二步(創建ArgumentParser對象):
margs=argparse.ArgumentParser()
第三步(增加要解析的命令行參數信息):
margs.add_argument(參數名,默認值,類型,提示語句)
第四步(生成參數列表):
args=margs.parse_args()
二、最常用的輸入輸出
1.print函數【輸出】
①print函數原型
解釋參數列表:
?? ?*args代表不固定個參數
?? ?sep代表間隔默認為空格
?? ?end代表輸出后結尾加換行
?? ?file代表是否將輸出流重定向至文件。是一個文件描述符
末尾的pass代表占位符,因為python是一門語法格式化要求嚴格的語言
函數內、循環語內不可以留空一般使用pass占住位置。
def print(self, *args, sep=' ', end='\n', file=None):? ?? ?# known special case of print ? ? """ ? ? print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False) ? ?? ? ? Prints the values to a stream, or to sys.stdout by default. ? ? Optional keyword arguments: ? ? file: ?a file-like object (stream); defaults to the current sys.stdout. ? ? sep: ? string inserted between values, default a space. ? ? end: ? string appended after the last value, default a newline. ? ? flush: whether to forcibly flush the stream. ? ? """ ? ? pass
②使用print函數
print函數可以打印數字,運算加減法
可以輸出字符串(字符串必須用雙引號或者單引號引起來,否則解釋器會不明白輸入的是什么)
print可以將輸出的內容直接定向到文件里面,open函數打開文件
創建python腳本不需要引入頭文件,在使用某庫時才import 第三方包。
# 1.輸出數字 print(888) # 2.輸出運算式 print(1+3) # 輸出字符串 print('Hello World') print('Hello World', "Hello Kity") # print函數將內容直接輸出到文件內 # 打開文件test.txt得到文件描述符F然后對文件進行輸出。 F = open('test.txt', "a+") print('Hello File', file=F) F.close()
2.input函數【輸入】
①input函數原型
- input函數是Python中常用的輸入函數,可以讀取黑窗口輸入的數據
def input(*args, **kwargs): # real signature unknown ? ? """ ? ? Read a string from standard input. ?The trailing newline is stripped. ? ?? ? ? The prompt string, if given, is printed to standard output without a ? ? trailing newline before reading input. ? ?? ? ? If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. ? ? On *nix systems, readline is used if available. ? ? """ ? ? pass
②使用input函數
# 輸入函數 input # 輸入函數框內填寫的是提示性語句 # 輸入進來的內容剛開始都是字符串類型 q=input('請輸入您的名字') print(type(q)) print("我的名字叫:",q) # input(可以直接進行類型轉換) q=int(input("請輸入您的數據:")) print(type(q))
三、sys包下的輸入輸出
從名字上來看這個包是關于系統的包,如果print與input沒有辦法滿足你的需求的時候
不妨來看看sys.stdin與sys.stdout。print與input均是在后者的基礎上封裝而成的。
1.sys.stdin
比input更加標準的輸入,可以使用他的方法readline()一次讀入一行
讀入的一行包含所有特殊字符與后來的換行,如果不想將換行讀進
來就在readline后面加上strip()
代碼如下:
#首先導包 import sys #直接讀取一行,包括末尾的換行符 str1=sys.stdin.readline() #讀取一行不包括最后的換行符 str2=sys.stdin.readline().strip()
2.sys.stdout
這個是比print函數更加官方輸出,因為print是在他的基礎之上進行封裝實現的。對于Python而言sys.stdout.write(“Hello World”+"\n")與print(“Hello World”)
效果是一樣的。sys.stdout
也支持輸出的重定向。操作方法就是直接將標準輸出
對象指向文件描述符,如果想要恢復標準輸出,只需將輸入輸出對象再次指向標準輸入輸出對象即可.
代碼如下:
import sys #創建一個文件描述符 f1=open("log.txt","w") #將標準輸出重定向到文件log.txt內 sys.stdout=f1 #寫入信息 sys.stdout.write("Hello") #恢復重定向 sys.stdout=sys.__stdout__
四、命令行腳本的重定向
在生活中我們可能有這么一種需求,就是對自己寫的代碼進行測試,測試的時候如果數據量很大我們每次都進行輸入的話非常麻煩,還會有一種需求就是打印日志,如果每次將日志打印到屏幕信息量大的話可能就會被刷新下去。由此我們的輸入輸出重定向來了。輸入輸出重定向一般就是將屏幕上的數據打印到文件內,或者需要從屏幕讀取的數據改為從文件讀取。
1.重定向標準輸出
將腳本的執行結果直接輸送進文件,永久保存
語法是:python 文件.py > 儲存文件eg: python test.py > output.txt
代碼如下:
import sys num=int(input()) # num=int(sys.argv[1]) flag=True for i in range(1,10): ? ? for j in range(0,10): ? ? ? ? temp=num-2*i-2*j ? ? ? ? if temp<10 and temp>=0: ? ? ? ? ? ? print(i*10000+j*1000+temp*100+j*10+i) ? ? ? ? ? ? flag=False for i in range(1,10): ? ? for j in range(0,10): ? ? ? ? temp=num-2*i-2*j ? ? ? ? if temp>=0 and temp%2==0 and temp//2<10: ? ? ? ? ? ? print(i*100000+j*10000+temp//2*1000+temp//2*100+j*10+i) ? ? ? ? ? ? flag=False if flag: ? ? print(-1)
結果如下:
2.重定向標準輸入
對于輸入重定向與輸出的語法幾乎相同
python test.py < input.txt
總結:
使用Python進行輸入輸出的重定向,可以通過代碼對數據進行排序、篩選等操作,可以起到過濾器的作用。在刷算法題的時候我們往往需要對輸入輸出更加的了解才能符合算法題給出的樣例輸入樣例輸出。由此可見掌握Python的輸入輸出對我們而言非常重要。
到此這篇關于Python 常用的print輸出函數和input輸入函數的文章就介紹到這了,更多相關Python 輸入輸出函數內容請搜索AB教程網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持AB教程網!
原文鏈接:https://blog.csdn.net/apple_51931783/article/details/123087865
相關推薦
- 2023-01-14 C++?win系統如何用MinGW編譯Boost庫_C 語言
- 2022-03-16 C++?NFS掛載及掛載命令_C 語言
- 2022-09-04 Python裝飾器有哪些絕妙的用法_python
- 2023-03-18 pandas數據聚合與分組運算的實現_python
- 2023-12-12 線程死鎖的概念及其解決方法
- 2022-10-02 iOS開發實現抽屜效果_IOS
- 2022-04-02 一文講解Kotlin中的contract到底有什么用_Android
- 2022-07-31 Windows使用cmd命令行查看、修改、刪除與添加環境變量_DOS/BAT
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支