python輸出到文件
1. python怎樣將結果輸出到文件中
dataframe推薦直接存成csv文件格式
data.to_csv('file_name.csv')
這樣就可以了,如果遇到中文編碼報錯再加編碼格式就好了
2. python新人,如何將結果輸出到txt文件.
#coding='utf-8'
importos,sys
fromrandomimportsample
importtime
importdatetime
truelist=[]
falselist=[]
IP=['192.168.1.1','192.168.0.1','192.168.1.2']
f=open(datetime.datetime.now().strftime("%Y%m%d%H%M%S")+".txt","w")
foriinsample(IP,2):
ping=os.system('ping-c3%s'%i)
ifping:
falselist.append(i)
else:
truelist.append(i)
print('truelist:'+str(truelist),file=f)
print('falselist:'+str(falselist),file=f)
f.close()
3. python輸出結果存到文件
這樣就直接輸出到文件中去了doc = open('out.txt','w')print(data_dict,file=doc)doc.close()
4. python輸出到文件亂碼如何解決
python代碼文件的編碼
py文件默認是ASCII編碼,中文在顯示時會做一個ASCII到系統默認編碼的轉換,這時就會出錯:SyntaxError: Non-ASCII character。需要在代碼文件的第一行或第二行添加編碼指示:
1 # coding=utf-8 ##以utf-8編碼儲存中文字元
2 print '中文'
像上面那樣直接輸入的字元串是按照代碼文件的編碼來處理的,如果用unicode編碼,有以下三種方式:
1 s1 = u'中文' #u表示用unicode編碼方式儲存信息
2 s2 = unicode('中文','gbk')
unicode是一個內置函數,第二個參數指示源字元串的編碼格式。
decode是任何字元串具有的方法,將字元串轉換成unicode格式,參數指示源字元串的編碼格式。
encode也是任何字元串具有的方法,將字元串轉換成參數指定的格式。
(2)、字元串的編碼
用 u'漢字' 構造出來的是unicode類型,不用的話構造出來是str類型
str的編碼是與系統環境相關的,一般就是sys.getfilesystemencoding()得到的值
所以從unicode轉str,要用encode方法
從str轉unicode,所以要用decode
例如:
# coding=utf-8 #默認編碼格式為utf-8
s = u'中文' #unicode編碼的文字
print s.encode('utf-8') #轉換成utf-8格式輸出
但當python中間處理非ASCII編碼時,經常會出現如下錯誤:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
0x??是超出128的數字,python在默認的情況下認為語言的編碼是ascii編碼,所以無法處理其他編碼,需要設置python的默認編碼為所需要的編碼。
一個解決的方案是在代碼中添加:
import sys
reload(sys)
sys.setdefaultencoding('utf-8') (其中utf-8為你想輸出的字元編碼)
解釋:
sys.setdefaultencoding方法在python導入site.py後就刪除了(具體代碼查看site.py就可以看到)因此如果想用的話可以再重新load進入
總結:
u=u'unicode編碼文字'
g=u.encode('gbk') #轉換為gbk格式
print g #此時為亂碼,因為當前環境為utf-8,gbk編碼文字為亂碼
str=g.decode('gbk').encode('utf-8') #以gbk編碼格式讀取g(因為他就是gbk編碼的,需要事先知道它是GBK編碼)並轉換為utf-8格式輸出
print str #正常顯示中文(同文件輸出)
安全的方法:
s.decode('gbk','ignore').encode('utf-8′) #以gbk編碼讀取(當然是讀取gbk編碼格式的文字了)並忽略錯誤的編碼,轉換成utf-8編碼輸出。
推薦學習《Python教程》!
5. python怎麼把輸出保存為一個文件
寫入什麼數據就用什麼模式打開文件,寫二進制數據就用二進制模式打開文件,這樣就沒問題了。
6. python中怎麼輸入輸出文件
1.打開和關閉文件(open(),file(),close())
有兩種內建函數可以獲取文件對象:open和file。他們的用法完全一樣。下面只以open()為例子講解。獲取一個文件對象(打開文件)的語法如下:
復制代碼 代碼如下:fileObj = open(filename,access_mode='r',buffering=-1)
filename不用說你也應該知道是你要打開文件的路徑。
access_mode用來標識文件打開的模式,默認為r(只讀)。
常用的模式如下表所示:
文件模式 解釋
r 以只讀方式打開
w 以寫方式打開,文件不為空時清空文件;文件不存在時新建文件。
a 追加模式,沒有則創建
r+,w+,a+ 以讀寫模式打開,參見w,a
另外還有一個b表示二進制模式訪問,但是對於Linux或者unix系統來說這個模式沒有任何意義,因為他們把所有文件都看作二進制文件,包括文本文件。
第三個參數不經常用到,標識訪問文件的緩沖方式,0代表不緩沖,1代表緩
沖一行,-1代表使用系統默認緩沖方式。只要使用系統默認就好。
一些例子:
復制代碼 代碼如下:
>>> f = open('/etc/passwd','r')
>>> f1 = open('/etc/test','w')
使用完文件後,一定要記得關閉文件,操作如下:
復制代碼 代碼如下:
>>> f.close()
2.文件讀入
2.1.file.read(size = -1)
讀取從當前文件游標起size個位元組的文件內容。如果size=-1,則讀取所有剩餘位元組。
復制代碼 代碼如下:
>>> f = open('/etc/passwd')
>>> f.read(100)
'root:x:0:0:root:/root:/bin/bash\nbin:x:1:1:bin:/bin:/sbin/nologin\ndaemon:x:2:2:daemon:/sbin:/sbin/nol'
2.2.file.readlines(size=-1)
從文件中讀取並返回一行(包括行結束符),或返回最大size個字元
復制代碼 代碼如下:
>>> f.readline()
'ogin\n'#和上面一個例子輸出的最後拼起來就是 'nologin',因為游標在l後面。
>>> f.readline(1)
'a'
2.3.file.readlines(sint=0)
讀取文件所有的行,並作為一個列表返回(包括行結束符),如果sint>0則返回總和大約sint位元組的行(具體由緩沖區大小決定)。
復制代碼 代碼如下:
f.readlines()
['dm:x:3:4:adm:/var/adm:/sbin/nologin\n', 'lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin\n', 'sync:x:5:0:sync:/sbin:/bin/sync\n', 'shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown\n', 'halt:x:7:0:halt:/sbin:/sbin/halt\n', 'mail:x:8:12:mail:/var/spool/mail:/sbin/nologin\n', ......
輸出省略。
3.文件輸出
3.1.file.write(str)
向文件中寫入指定的字元串。
復制代碼 代碼如下:
>>> f = file('/root/test.py','w+')
>>> f.write("print 'hello,world'")
>>> f.read()
''
>>> f.close()
>>> file('/root/test.py','r').read()
"print 'hello,world'"
3.2.file.write(seq)
向文件寫入字元串序列seq。seq是任何返回字元串的可迭代對象。
復制代碼 代碼如下:
>>> f = file('/root/test.py','a+')
>>> codelst = ['\n','import os\n',"os.popen('ls').read()\n"]
>>> f.writelines(codelst)
>>> f.close()
>>> file('/root/test.py','r').read()
"print 'hello,world'\nimport os\nos.popen('ls').read()\n"
注意,文件寫入的時候,不會自動加上換行符,必須手動加上。