天天看點

Python檔案管理、亂碼及對passwd檔案排序

1.讀寫檔案

讀檔案:

1

2

3

<code>    </code><code>f </code><code>=</code> <code>open</code><code>(</code><code>"1.txt"</code><code>)</code>

<code>    </code><code>text </code><code>=</code> <code>f.readlines()</code>

<code>    </code><code>print</code><code>(text)</code>

寫檔案:

<code>    </code><code>f </code><code>=</code> <code>open</code><code>(</code><code>"2.txt"</code><code>,</code><code>'w'</code><code>)encoding</code><code>=</code><code>'utf-8'</code>

<code>    </code><code>f.write(</code><code>"Hello World!"</code><code>)</code>

<code>    </code><code>f.close()</code>

代碼:

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<code>class</code> <code>File</code><code>():</code>

<code>    </code><code>ENCODING </code><code>=</code> <code>"utf-8"</code>

<code>    </code><code>def</code> <code>wirteFile(</code><code>self</code><code>):</code>

<code>        </code><code>filename </code><code>=</code> <code>input</code><code>(</code><code>"Please input the file name: "</code><code>)</code>

<code>        </code><code>f </code><code>=</code> <code>codecs.</code><code>open</code><code>(filename,</code><code>'w'</code><code>,encoding</code><code>=</code><code>File</code><code>.ENCODING)</code>

<code>        </code><code>while</code> <code>1</code><code>:</code>

<code>            </code><code>context </code><code>=</code> <code>input</code><code>(</code><code>"Please input the file context: "</code><code>)</code>

<code>            </code><code>if</code> <code>context </code><code>=</code><code>=</code> <code>"EOF"</code><code>:</code>

<code>                </code><code>break</code>

<code>            </code><code>f.write(context)</code>

<code>            </code><code>f.write(</code><code>"\n"</code><code>)</code>

<code>    </code><code>def</code> <code>readFile(</code><code>self</code><code>):</code>

<code>        </code><code>print</code><code>(</code><code>"####################STAT######################"</code><code>)</code>

<code>        </code><code>readfile </code><code>=</code> <code>input</code><code>(</code><code>"Please input your read file name: "</code><code>)</code>

<code>        </code><code>fileread </code><code>=</code> <code>codecs.</code><code>open</code><code>(readfile,encoding</code><code>=</code><code>File</code><code>.ENCODING)</code>

<code>        </code><code>readContext </code><code>=</code> <code>fileread.read()</code>

<code>        </code><code>print</code><code>(readContext)</code>

<code>        </code><code>print</code><code>(</code><code>"################### END ######################"</code><code>)</code>

<code>        </code><code>fileread.close()</code>

<code>if</code> <code>__name__ </code><code>=</code><code>=</code> <code>'__main__'</code><code>:</code>

<code>    </code><code>import</code> <code>codecs</code>

<code>    </code><code>File</code> <code>=</code> <code>File</code><code>()</code>

<code>    </code><code>File</code><code>.wirteFile()</code>

<code>    </code><code>File</code><code>.readFile()</code>

執行過程:

<code>Please </code><code>input</code> <code>the </code><code>file</code> <code>name: fxq.log</code>

<code>Please </code><code>input</code> <code>the </code><code>file</code> <code>context: Hello world!</code>

<code>Please </code><code>input</code> <code>the </code><code>file</code> <code>context: My name </code><code>is</code> <code>Fengxiaoqing</code>

<code>Please </code><code>input</code> <code>the </code><code>file</code> <code>context: I'm </code><code>30</code>

<code>Please </code><code>input</code> <code>the </code><code>file</code> <code>context: I'm a bright boy.l</code>

<code>Please </code><code>input</code> <code>the </code><code>file</code> <code>context: Think you very much!</code>

<code>Please </code><code>input</code> <code>the </code><code>file</code> <code>context: EOF</code>

<code>####################STAT######################</code>

<code>Please </code><code>input</code> <code>your read </code><code>file</code> <code>name: fxq.log</code>

<code>Hello world!</code>

<code>My name </code><code>is</code> <code>Fengxiaoqing</code>

<code>I'm </code><code>30</code>

<code>I'm a bright boy.l</code>

<code>Think you very much!</code>

<code>################### END ######################</code>

<code>程序已結束,退出代碼</code><code>0</code>

2. 檔案方法

檔案常用方法:

    readline()

    readlines()

    next()

    read()

    write()         寫入的是字元串

    writelines()    參數是序列,比如清單,它會疊代幫你 寫入檔案

檔案屬性:

    f.name

    f.closed

    f.encoding

    f.mode

with用法:

<code>    </code><code>with codec.</code><code>open</code><code>(</code><code>"1.log"</code><code>,encoding</code><code>=</code> <code>"utf-8"</code><code>) as f:</code>

<code>        </code><code>print</code><code>(f.read())</code>

3.python2的亂碼問題

Python檔案管理、亂碼及對passwd檔案排序

python2中:

import sys

reload(sys)

print(sys.getdefaultencoding())

Python檔案管理、亂碼及對passwd檔案排序
Python檔案管理、亂碼及對passwd檔案排序

4.python對passwd檔案進行排序

密碼檔案:

25

26

27

28

29

30

31

<code>[root@localhost ~]</code><code># cat passwd.txt</code>

<code>root:x:0:0:root:</code><code>/root</code><code>:</code><code>/bin/bash</code>

<code>bin:x:1:1:bin:</code><code>/bin</code><code>:</code><code>/sbin/nologin</code>

<code>daemon:x:2:2:daemon:</code><code>/sbin</code><code>:</code><code>/sbin/nologin</code>

<code>adm:x:3:4:adm:</code><code>/var/adm</code><code>:</code><code>/sbin/nologin</code>

<code>lp:x:4:7:lp:</code><code>/var/spool/lpd</code><code>:</code><code>/sbin/nologin</code>

<code>sync</code><code>:x:5:0:</code><code>sync</code><code>:</code><code>/sbin</code><code>:</code><code>/bin/sync</code>

<code>shutdown</code><code>:x:6:0:</code><code>shutdown</code><code>:</code><code>/sbin</code><code>:</code><code>/sbin/shutdown</code>

<code>halt:x:7:0:halt:</code><code>/sbin</code><code>:</code><code>/sbin/halt</code>

<code>mail:x:8:12:mail:</code><code>/var/spool/mail</code><code>:</code><code>/sbin/nologin</code>

<code>operator:x:11:0:operator:</code><code>/root</code><code>:</code><code>/sbin/nologin</code>

<code>games:x:12:100:games:</code><code>/usr/games</code><code>:</code><code>/sbin/nologin</code>

<code>ftp</code><code>:x:14:50:FTP User:</code><code>/var/ftp</code><code>:</code><code>/sbin/nologin</code>

<code>nobody:x:99:99:Nobody:/:</code><code>/sbin/nologin</code>

<code>systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:</code><code>/sbin/nologin</code>

<code>systemd-network:x:192:192:systemd Network Management:/:</code><code>/sbin/nologin</code>

<code>dbus:x:81:81:System message bus:/:</code><code>/sbin/nologin</code>

<code>polkitd:x:998:996:User </code><code>for</code> <code>polkitd:/:</code><code>/sbin/nologin</code>

<code>libstoragemgmt:x:997:995:daemon account </code><code>for</code> <code>libstoragemgmt:</code><code>/var/run/lsm</code><code>:</code><code>/sbin/nologin</code>

<code>rpc:x:32:32:Rpcbind Daemon:</code><code>/var/lib/rpcbind</code><code>:</code><code>/sbin/nologin</code>

<code>tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:</code><code>/dev/null</code><code>:</code><code>/sbin/nologin</code>

<code>ntp:x:38:38::</code><code>/etc/ntp</code><code>:</code><code>/sbin/nologin</code>

<code>abrt:x:173:173::</code><code>/etc/abrt</code><code>:</code><code>/sbin/nologin</code>

<code>postfix:x:89:89::</code><code>/var/spool/postfix</code><code>:</code><code>/sbin/nologin</code>

<code>sshd:x:74:74:Privilege-separated SSH:</code><code>/var/empty/sshd</code><code>:</code><code>/sbin/nologin</code>

<code>chrony:x:996:994::</code><code>/var/lib/chrony</code><code>:</code><code>/sbin/nologin</code>

<code>tcpdump:x:72:72::/:</code><code>/sbin/nologin</code>

<code>dockerroot:x:995:992:Docker User:</code><code>/var/lib/docker</code><code>:</code><code>/sbin/nologin</code>

<code>saslauth:x:994:76:Saslauthd user:</code><code>/run/saslauthd</code><code>:</code><code>/sbin/nologin</code>

<code>mailnull:x:47:47::</code><code>/var/spool/mqueue</code><code>:</code><code>/sbin/nologin</code>

<code>smmsp:x:51:51::</code><code>/var/spool/mqueue</code><code>:</code><code>/sbin/nologin</code>

代碼:

<code>#/usr/bin/env python</code>

<code># -*- coding:utf-8 -*-</code>

<code># @time   :2018/1/25 22:11</code>

<code># @Author :FengXiaoqing</code>

<code># @file   :uidSort-Passwd.py</code>

<code>import</code> <code>codecs</code>

<code>file</code> <code>=</code> <code>"passwd.txt"</code>

<code>sortfile </code><code>=</code> <code>"sortpasswd.txt"</code>

<code>fileContext </code><code>=</code> <code>[]</code>

<code>sortuid </code><code>=</code> <code>[]</code>

<code>with codecs.</code><code>open</code><code>(sortfile,</code><code>'wb'</code><code>) as fsort:</code>

<code>    </code><code>with codecs.</code><code>open</code><code>(</code><code>file</code><code>,encoding</code><code>=</code><code>'utf-8'</code><code>) as f:</code>

<code>        </code><code>fileContext </code><code>+</code><code>=</code> <code>f.readlines()</code>

<code>        </code><code>for</code> <code>line </code><code>in</code> <code>fileContext:</code>

<code>            </code><code>sortuid.append(</code><code>int</code><code>(line.split(</code><code>':'</code><code>)[</code><code>2</code><code>]))</code>

<code>        </code><code>sortuid.sort()</code>

<code>        </code><code>for</code> <code>uid </code><code>in</code> <code>sortuid:</code>

<code>            </code><code>for</code> <code>line </code><code>in</code> <code>fileContext:</code>

<code>              </code><code>if</code> <code>str</code><code>(uid) </code><code>=</code><code>=</code> <code>line.split(</code><code>":"</code><code>)[</code><code>2</code><code>]:</code>

<code>                </code><code>print</code><code>(line)</code>

<code>                </code><code>fsort.write(line.encode(</code><code>"utf-8"</code><code>))</code>

版權聲明:原創作品,如需轉載,請注明出處。否則将追究法律責任

本文轉自 楓葉雲  51CTO部落格,原文連結:http://blog.51cto.com/fengyunshan911/2065251