python核心程式設計 第九章 9 11 練習

2021-06-22 12:41:29 字數 4567 閱讀 7090

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 9–1. 檔案過濾. 顯示乙個檔案的所有行, 忽略以井號( # )開頭的行.

# 這個字元被用做python, perl, tcl, 等大多指令碼檔案的注釋符號.

# 附加題: 處理不是第乙個字元開頭的注釋.

import os, sys

filename = ""

for filename in os.listdir(os.getcwd()):

if os.path.splitext(filename)[1] == ".py":

break

fobj = open(filename, "r")

print

print '*' * 25

for line in fobj:

if line[0] != '#':

print line,fobj.close()

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 9–2. 檔案訪問. 提示輸入數字 n 和檔案 f, 然後顯示檔案 f 的前 n 行.

import os

number = int(raw_input("please input the how lines to show: "))

filename = raw_input("please input the file name: ")

print filename

if not os.path.exists(filename):

print "file not exist."

else:

fobj = open(filename, "r")

show_number = 0

for line in fobj:

if show_number > number:

break

print line,

show_number += 1fobj.close()

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 9–3. 檔案資訊. 提示輸入乙個檔名, 然後顯示這個文字檔案的總行數.

import os

filename = raw_input("please input file name: ")

fobj = open(filename, "r")

print len(lines = fobj.readlines())fobj.close()

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 9–4. 檔案訪問. 寫乙個逐頁顯示文字檔案的程式. 提示輸入乙個檔名, 每次顯示

# 文字檔案的 25 行, 暫停並向使用者提示"按任意鍵繼續.", 按鍵後繼續執行.

import os

filename = raw_input("please input file name: ")

fobj = open(filename, "r")

show_number = 0

for f in fobj:

print f,

show_number += 1

if show_number % 25 == 0:

# print "any key to continue..."

os.system('pause')fobj.close()

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 9–6. 檔案比較. 寫乙個比較兩個文字檔案的程式. 如果不同, 給出第乙個不同處的行號和列號.

fobj1 = open("9-6.py", "r")

fobj2 = open("9-3.py", "r")

length = max(len(fobj1.readlines()), len(fobj2.readlines()))

fobj1.seek(0)

fobj2.seek(0)

for linenum in range(0, length):

line1 = fobj1.readline()

line2 = fobj2.readline()

if line1 != line2:

print "diff at", linenum+1

break

else:

if len(fobj1.readlines()) == len(fobj2.readlines()):

print "same"

else:

print length+1

fobj1.close()

fobj2.close()

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 9–13. 命令列引數

# a) 什麼是命令列引數, 它們有什麼用?

# b) 寫乙個程式, 列印出所有的命令列引數.

import sys

for arg in sys.argv:

print arg

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 9–15. 複製檔案. 提示輸入兩個檔名(或者使用命令列引數).

# 把第乙個檔案的內容複製到第二個檔案中去.

import sys

def printhelp():

print "useage: ", sys.argv[0], "source target"

if len(sys.argv) != 3:

printhelp()

else:

sourcename = sys.argv[1]

targetname = sys.argv[2]

fsource = open(sourcename, "r")

ftarget = open(targetname, "w")

for line in fsource:

ftarget.write(line)

fsource.close()

ftarget.close()

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 9–16. 文字處理. 人們輸入的文字常常超過螢幕的最大寬度. 編寫乙個程式,

# 在乙個文字檔案中查詢長度大於 80 個字元的文字行. 從最接近 80 個

# 字元的單詞斷行, 把剩餘檔案插入到下一行處.

# 程式執行完畢後, 應該沒有超過 80 個字元的文字行了.

fsource = open("x", "r")

ftarget = open("no-80.txt", "w")

for line in fsource:

if len(line)-1 <= 80:

ftarget.write(line)

else:

writeline = line

while len(writeline)-1 > 80:

i = 79

while i >= 0:

if writeline[i] in [' ', ',', ':', ';', '.', '!']:

ftarget.write(writeline[0:i+1] + '\n')

writeline = writeline[i+1:]

break;

i -= 1

ftarget.write(writeline)

fsource.close()

ftarget.close()

#!/usr/bin/python

# -*- coding: utf-8 -*-

# 9.18. 搜尋檔案. 提示輸入乙個位元組值(0 - 255)和乙個檔名.

# 顯示該字元在檔案中出現的次數.

filename = raw_input("please input file name: ")

ch = raw_input("please input the char for find: ")

fobj = open(filename)

count = 0

for line in fobj:

count += line.count(ch)

else:

print count

python核心程式設計第九章答案

9.1 比較簡單 看每一行開頭是不是 是的話,忽略這一行 usr bin env python import os while true inputfile raw input please input the file name if not os.path.exists inputfile pr...

程式設計珠璣第九章

1 記憶體訪問 連續記憶體訪問與跨頁面訪問記憶體的區別 注意在訪問記憶體的時候,要注意記憶體的連續性,如果訪問的記憶體不是連續的,那麼程式的執行速度也會受到極大的影響 例如訪問乙個二維陣列時,先訪問行,再訪問列,能夠減少頁面排程次數,同時cache命中率也相對高些。2 遞迴呼叫巨集時,需要小心,巨集...

第九章 核心同步介紹

1.隨著2.6版核心的出現,linux核心已經發展成搶占式核心,如果不加保護,排程程式可以在任何時刻搶占正在執行的核心程式碼,重新排程其他的程序執行 2.臨界區或者臨界段 訪問和操作共享資料的程式碼段 3.如果兩個執行執行緒 指代的是任何正在執行的程式碼,如乙個在核心執行程序 乙個中斷處理程式或者核...