文件读写及实操项目

读写文件

文件系统-模块   什么是模块?例如下面random,如果需要生成随机数就需要引用random模块
                                              >>> import random  #random随机函数
                                              >>> secert = random.randint(1, 10)
                                              >>> secert
                                                     3
一、OS模块
可以使程序运行在所有操作系统上
将单个文件和路径上的文件名以字符串传递 使用os.path.join()返回文件路径的字符串
>>> import os
>>> os.path.join('user', 'bin', 'spam')
'user\\bin\\spam'


把文件名列表中的名称,添加到文件夹名称的末尾
>>> myfile = ['1.csv', '2.doc', 'aaa.txt']
>>> for filename in myfile:
    print(os.path.join('d:\\User\\xiu', filename))

    
d:\User\xiu\1.csv
d:\User\xiu\2.doc
d:\User\xiu\aaa.txt

OS模块关于文件/目录的相关函数

os.getcwd()返回当前工作目录
os.chdir()修改当前工作目录
os.makedirs()创建新文件夹,多层
os.listdir(path='')列举指定目录中文件
os.mkdir()创建单层目录,如果该目录存在抛出异常
os.rmdir(psth)删除空目录
os.remove(path)删除子目录
os.system(command)运行系统的shell    os.system('cmd')
os.rename(old, new) 将文件old重名为new   os.rename('e:\\A', 'e:\\C')
os.curdir指代当前目录 ‘.’
os.pardir指代上一级目录‘..’



二、OS.path模块关于文件/目录相关的函数

os.path.basename('e:\\B')去掉目录路径
os.path.dirname(path)去掉文件名
os.path.join('A', ' B', 'C')
os.path.split('path')分割文件名与路径
os.path.splitext()分离文件名与扩展名
getsize(file)返回指定文件的尺寸,单位是字节
os.path.getatime(file)返回指定文件最近的访问时间    time模块  gmtime()或localtime()
             import time
             time.gmtime(os.path.getatime(file))
os.path.getctime(file)返回指定文件的创建时间
os.path.abspath(path)返回参数的绝对路径的字符串
os.path.isabs(path)如果参数绝对路径就返回true  ,如果参数是相对路径就返回false
             备注:相对路径  相对于程序的当前工作目录
os.path.relpath(path,start)返回从start路径到path的相对路径的字符串,如果没有start,
             就使用当前工作目录作为开始路径
os.path.exists(path)如果路径所指的文件或文件夹存在就返回true,否则返回false



             
三、文件读写过程
在Python中,读写文件3个步骤:
             1、调用open()函数,返回一个file对象
             2、调用file对象的read()或write()方法
             3、调用file对象的close()方法,关闭文件
             例如:>>> myfile = open('C:\\Users\\xiu\\Desktop\\1.txt')
                   >>> mycontent = myfile.read()
                   >>> mycontent
                   '返回字符串'

             例如:>>> myfile = open('C:\\Users\\xiu\\Desktop\\2.txt', 'w')
                   >>> myfile.write('hello world\n')
                         12
                   >>> myfile.close()
                   >>> myfile = open('C:\\Users\\xiu\\Desktop\\2.txt', 'a')
                   >>> myfile.write('bacon is not a vegetable.')
                         25
                   >>> myfile.close()
                   >>> myfile = open('C:\\Users\\xiu\\Desktop\\2.txt')
                   >>> haha = myfile.read()
                   >>> myfile.close()
                   >>> print(haha)
                       hello world
                       bacon is not a vegetable.
             'r'只读   'w'写   'a'添加模式


四、shelve模块保存变量
使用shelve模块将Python程序中的变量保存到二进制的shelf文件中
import shelve
             shelffile = shelve.open('mydata')
             cats = ['hh', 'simon', 'stone']
             shelffile['cats'] = cats
             shelffile.close()
 
          ① shelffile = shelve.open('mydata')
             shelffile['cats']
             shelffile.close()
shelf值有keys()和values()
          ② >>> shelffile = shelve.open('C:\\Users\\xiu\\Desktop\\3.txt')
             >>> list(shelffile.keys())
                 ['cats']
             >>> list(shelffile.values())
                 [['lilei', 'simon', 'stone']]
             >>> shelffile.close()


五、pprint.pformat()函数保存变量
该函数将提供一个字符串,该文件将成为你自己的模块,如果你需要使用存储在其中的变量,就可以导入它
            import pprint
             cats = [{'name': 'zeoo', 'name': 'lilei'}]
             pprint.pformat(cats)
             "[{'name': 'zeoo', 'name': 'lilei'}]"
             fileobj = open('mycats.py', 'w')
             fileobj.write('cats = ' + pprint.pformat(cats) + '\n')
             fileobj.close()

             import mycats
             mycats.cats
             [{'name': 'zeoo', 'name': 'lilei'}]
             mycats.cats[0]
             {'name': 'zeoo'}
             mycats.cats[1]['name']
             'lilei'


六、项目:生成随机的测验试卷文件

程序思路
        第一步:将测验数据保存在一个字典中。创建一个脚本框架,并填入测验数据。创建一个名为randomQuizGenerstor.py文件
        第二步:创建测验文件,并打乱问题的次序

        第三步:创建答案选项

        第四步:将内容写入测验试卷和答案文件

具体代码:方法①

# -*- coding: UTF-8 -*-
import random
#创建3份不同的测验试卷
#为每份试卷创建4个多重选择题,次序随机
#为每个问题提供一个正确的答案和3个随机的错误答案,次序随机
#将测验试卷写到3个文本文件中
#这意味着代码需要坐下面的事
#1、将州和对应的首府保存在一个字典中
#2、针对测验文本文件和答案文本文件,调用open()、write()、close()
#3、利用random.shuffle()随机调整问题和多重选项的次序
capitals = {'alabama': 'montgomery', 'alaska': 'juneau', 'arizona': 'phoenix', 'arkansas':
'little rock'}
for quizNUM in range(4):
# todo: crate the quiz and answer key files
quizfile = open('capitalsquiz%s.txt' % (quizNUM + 1), 'a')
answerKeyFile = open('capitalquiz_answer%s.txt' % (quizNUM + 1),'a')

# todo: write out the header for the quiz
quizfile.write('name:\n\nDate:\n\nPeriod:\n\n')
quizfile.write((' ' * 20) + 'state captials Quiz (form %s)' % (quizNUM + 1))
quizfile.write(' \n\n')

# todo: shuffle the order of the states
states = list(capitals.keys())
random.shuffle(states)
# todo: loop thyough all 4 ststes, making a question for each
for questionNUM in range(4):
correctAnswer = capitals[states[questionNUM]]
wrongAnswers = list(capitals.values())
del wrongAnswers[wrongAnswers.index(correctAnswer)]
wrongAnswers = random.sample(wrongAnswers, 3)
answerOptions = wrongAnswers + [correctAnswer]
random.shuffle(answerOptions)

quizfile = open('capitalsquiz%s.txt' % (quizNUM + 1), 'a')
quizfile.write('%s. what is the capital of %s?\n' % (questionNUM + 1, states[questionNUM]))
for i in range(4):
quizfile.write('%s. %s\n' % ('ABCD'[i], answerOptions[i]))
quizfile.write('\n')

answerKeyFile = open('capitalquiz_answer%s.txt' % (quizNUM + 1), 'a')
answerKeyFile.write('%s. %s\n' % (questionNUM + 1, 'ABCD'[answerOptions.index(correctAnswer)]))
quizfile.close()
answerKeyFile.close()
方法②
capitals = {'alabama': 'montgomery', 'alaska': 'juneau', 'arizona': 'phoenix', 'arkansas':
'little rock'}
for quizNUM in range(4):
# todo: crate the quiz and answer key files
with open('D:\Users\\xiu\PycharmProjects\\test\quiz\capitalsquiz%s.txt' % (quizNUM + 1), 'a') as r:
# todo: write out the header for the quiz
r.write('name:\n\nDate:\n\nPeriod:\n\n')
r.write((' ' * 10) + 'state captials Quiz (form %s)' % (quizNUM + 1))
r.write(' \n\n')

# todo: shuffle the order of the states
states = list(capitals.keys())
random.shuffle(states)
# todo: loop thyough all 4 ststes, making a question for each
for questionNUM in range(4):
correctAnswer = capitals[states[questionNUM]]
wrongAnswers = list(capitals.values())
del wrongAnswers[wrongAnswers.index(correctAnswer)]
wrongAnswers = random.sample(wrongAnswers, 3)
answerOptions = wrongAnswers + [correctAnswer]
random.shuffle(answerOptions)

with open('D:\Users\\xiu\PycharmProjects\\test\quiz\capitalsquiz%s.txt' % (quizNUM + 1), 'a') as f:
f.write('%d. what is the capital of %s?\n' % (questionNUM + 1, states[questionNUM]))

for i in range(4):
with open('D:\Users\\xiu\PycharmProjects\\test\quiz\capitalsquiz%s.txt' % (quizNUM + 1), 'a') as f:
f.write('%s. %s\n' % ('ABCD'[i], answerOptions[i]))

with open('D:\Users\\xiu\PycharmProjects\\test\quiz\capitalsquiz%s.txt' % (quizNUM + 1), 'a') as f:
f.write('\n')

with open('D:\Users\\xiu\PycharmProjects\\test\quiz\capitalquiz_answer%s.txt' % (quizNUM + 1), 'a') as f:
f.write('%s. %s\n' % (questionNUM + 1, 'ABCD'[answerOptions.index(correctAnswer)]))
 

 

posted @ 2017-11-15 15:14  干巴爹  阅读(432)  评论(0编辑  收藏  举报