Python篇:文件操作练习

题目

  • 1.批量修改文件名
  • 2.读取一个文件,显示除了以井号(#)开头的行以外的所有行。
  • 3.制作一个"密码薄",其可以存储一个网址(例如 www.csdn.net),和一个密码(例如 123456),请编写程序完成这个“密码薄”的增删改查功能,并且实现文件存储功能
  • 4.无重复字符的最长子串
  • 5.矩阵置零

1.批量修改文件名

import os

folderName = os.path.realpath('doc')

dirList = os.listdir(folderName)
for name in dirList:
    newName = '[西部开源]-' + name
    print("重命名 【%s】为【%s】成功! " % (name, newName))
    os.rename(folderName + '\\' + name, folderName + '\\' + newName)

Python篇:文件操作练习_第1张图片
Python篇:文件操作练习_第2张图片

2.读取一个文件,显示除了以井号(#)开头的行以外的所有行。

readLineList = []
with open('test.txt') as f:
    while True:
        readLine = f.readline()
        if readLine:
            readLineList.append(readLine)
        else:
            break

for i in readLineList:
    if not i.startswith("#"):
        print(i)

文件内容:
Python篇:文件操作练习_第3张图片
运行结果:
Python篇:文件操作练习_第4张图片

3.制作一个"密码薄",其可以存储一个网址(例如 www.csdn.net),和一个密码(例如 123456),请编写程序完成这个“密码薄”的增删改查功能,并且实现文件存储功能

"""
运行前test.txt必须不存在或内容为json编码过的 “一个” python字典
主界面输入0,查看所有数据
"""


import json
import os

dbDate = {}


def mainMenu():
    print('欢迎使用密码薄'.center(50, '#'))
    print("""
    1.添加数据
    2.删除数据
    3.修改数据
    4.查询数据
    5.退出
请选择:
    """)
    key = int(input())
    return key


def addData():
    global dbDate
    addInterInput = input('请输入网址:')
    passwdInput = input('请输入密码:')
    if not queryData(addInterInput, key=2):
        dbDate[addInterInput] = passwdInput
    else:
        print('网址已存在!')


def delData():
    global dbDate
    delInterInput = input('请输入要删除的网址:')
    if queryData(delInterInput, key=2):
        del dbDate[delInterInput]
        print('%s删除成功!' % delInterInput)
    else:
        print('网址不存在!')


def reviseData():
    global dbDate
    reviseInterInput = input('请输入要修改的网址:')
    newInterInput = input('请输入新网址:')
    passwdInput = input('请输入密码:')
    if queryData(reviseInterInput, key=2):
        del dbDate[reviseInterInput]
        dbDate[newInterInput] = passwdInput
    else:
        print('网址不存在!')


def queryData(interName, key=1):
    if interName in dbDate.keys():
        if key == 1:
            print('网址:', interName)
            print('密码:', dbDate[interName])
        return True
    else:
        if key == 1:
            print('网址不存在!')
        return False


def main():
    """
    输入0查看全部数据
    :return:
    """
    while True:
        userInput = mainMenu()
        if userInput == 1:
            addData()
        elif userInput == 2:
            delData()
        elif userInput == 3:
            reviseData()
        elif userInput == 4:
            queryInterName = input('请输入你要查询的网址:')
            queryData(queryInterName)
        elif userInput == 5:
            break
        elif userInput == 0:
            print(dbDate)
        else:
            print('输入错误,清重新输入:')


if __name__ == '__main__':
    if os.path.exists('test.txt'):
        with open('test.txt', 'r') as f:
            dbDateRead = f.read()
            dbDate = json.loads(dbDateRead)

        main()
        dbDateStr = json.dumps(dbDate)

        with open('test.txt', 'w') as f:
            f.write(dbDateStr)
    else:
        with open('test.txt', 'w+') as f:
            f.seek(0, 0)
            main()
            dbDateStr = json.dumps(dbDate)
            f.write(dbDateStr)

第一次运行:
Python篇:文件操作练习_第5张图片
Python篇:文件操作练习_第6张图片
Python篇:文件操作练习_第7张图片
Python篇:文件操作练习_第8张图片
Python篇:文件操作练习_第9张图片
Python篇:文件操作练习_第10张图片
Python篇:文件操作练习_第11张图片
Python篇:文件操作练习_第12张图片
查看文件:
在这里插入图片描述
再次运行查看数据:
Python篇:文件操作练习_第13张图片

4.无重复字符的最长子串

def noRepeatStrLenght(s):

    maxLen = 0
    if s is None or len(s) == 0:
        return maxLen
    sDict = {}
    oneMax = 0
    start = 0
    for i in range(len(s)):
        if s[i] in sDict and sDict[s[i]] >= start:
            start = sDict[s[i]] + 1
        oneMax = i - start + 1
        sDict[s[i]] = i
        maxLen = max(maxLen, oneMax)
    return maxLen

def main():
    sStr = input('请输入一串英文字母:')
    print(noRepeatStrLenght(sStr))

if __name__ == '__main__':
    main()

Python篇:文件操作练习_第14张图片

Python篇:文件操作练习_第15张图片

Python篇:文件操作练习_第16张图片

5.矩阵置零

def setMatrixZeroes(x):
    column, line = len(x), len(x[0])
    zeroSeat = [[i, j] for i in range(column) for j in range(line) if x[i][j] == 0]
    for items in zeroSeat:
        i, j = items[0], items[1]
        x[i] = [0 for l in range(line)]     # 多元赋值
        for k in range(column):
            x[k][j] = 0
    return x


x = [
    [1, 2, 3, 4],
    [1, 0, 3, 4],
    [1, 2, 0, 4],
    [1, 2, 3, 4]
]
print(setMatrixZeroes(x))

在这里插入图片描述

你可能感兴趣的:(Python练习)