文件操作实例

1.文件操作之bytes模式

  1.除了上篇所介绍的‘r‘,‘w‘,‘a‘只读只写只追加模式外,大家可能意识到一个问题就是这种操作只能对纯文本的文件进行操作,然而现在很多文件都是带有图片或者音频视频的文件,那该如何操作执行文件呢?接下来介绍文件操作其他三种类似模式

  我们上面的‘r‘,‘w‘,‘a‘起始都是‘rt‘,‘wt‘,‘at‘即文本文件操作的只读只写只追加,要想操作文本文件以外的文件类型,那就需要在这个t的位置上做一些手脚了,对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式)

  当使用‘b‘模式时候需要注意点几点是,b不能单独使用,也就是说它大打开模式必须是‘rb‘,‘wb‘,‘ab‘这种分别表示字节类型的只读,只写,只追加,且三者保留了文本文件操作时的特性,即‘rb‘只能读,且当文件不存在时会报错,‘wb‘只写,当文件不存在时会自动创建,而当文件存在时则会先清空文件内所有的内容再进行写入操作,‘ab‘模式也是一样,文件不存在时自动创建,存在时只在末尾追加内容

  值得注意的时,用带b模式去操作文件时,不需要指定编码(因为编码只会出现在于需要将数据进行编码之后才能被人或计算机读取的情况下)而字节类型的操作可以把它看作操作就跟二进制一样,也就是说他的结果计算机能直接看懂不需要进行编码,所以带b模式不需要指定encoding=‘...‘ 说明。还有一点需要注意的是用带b模式进行操作时都是站在二进制的层面上进行操作的,也就是你都出来的内容是二进制形式,那么你写如的内容也应该是以二进制的方式写入的(需要用到decode)。

  2.bytes类型的用途

    1.数据存取到计算机硬件中

    2.基于网络的信息之间传输

2.文件操作实例讲解

  1.涉及到文件,肯定会有文件的修改,拷贝等日常计算机使用中使用次数最频繁的操作

    练习1,利用b模式,编写一个cp工具,要求如下:

    1. 既可以拷贝文本又可以拷贝视频,图片等文件

    2. 用户一旦参数错误,打印命令的正确使用方法,如usage: cp source_file target_file

    提示:可以用import sys,然后用sys.argv获取脚本后面跟的参数

import sys
l = sys.argv
if len(l)!=3:
    print(‘usage: cp source_file target_file‘)
    sys.exit()
source_file,target_file=sys.argv[1],sys.argv[2]
with open(source_file,‘rb‘) as read_f,open(target_file,‘wb‘) as write_f:
    for line in read_f:
        write_f.write(line)

    文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,都是模拟出来的效果,具体的说有两种实现方式:

  方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)

with open(‘old.txt‘,‘r‘,encoding=‘utf-8‘) as f1:
    f1.read().replace(‘老的内容‘,‘新的内容‘)
with open(‘old.txt‘,‘w‘,encoding=‘utf-8‘) as f2:
    f2.write(f1.read().replace(‘老的内容‘,‘新的内容‘))

  方式二:将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件

import os #os为一个模块
with open(‘old.txt‘,‘r‘,encoding=‘utf-8‘) as f1,open(‘new.txt‘,‘w‘,encoding=‘utf-8‘) as f2: #这里有个小技巧,当需要同时打开好几个文件时,可以在#一个with内进行操作,如果太长影响画面效果可以在每个f1,后面加\如何按enter可以换行操作,本质还是一行
    for line in f1:
        if ‘需要修改的内容‘ in f1:
            line=line.replace(‘旧的内容‘,‘新的内容‘)
        f2.write(line)
os.remove(‘old.txt‘)
os.rename(‘new.txt‘,‘ole.txt‘)#将老的文件删除再将新的文件命名为来的文件名
1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数,求出本次购物花费的总钱数
apple 10 3
tesla 100000 1
mac 3000 2
lenovo 30000 3
chicken 10 3 

sum = 0
with open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) as f:
    for line in f:
        l = line.split(‘ ‘)
        sum +=int(l[2])
print(sum)

  小知识补充:我们现在知道了计算机里面的硬盘里面的数据根本没有删除和修改这么一说,所谓的删除其实是计算机将你删除了的那一部分存取数据的空间标记为free状态,严格意义上那片区域的数据还在,但是一旦有其他数据需要存到硬盘时,就会随机储存到free区域,所以文件修复不是百分百的,只有一种情况就是你删除了一些数据后就把电脑关机(那么被你删除的数据起始一直还在硬盘中),一旦你开机进行一些存取操作,那就保不住之前的数据什么时候会被覆盖了,那修改文件呢则是先将文件所以内容读到内存如何修改再全部储存到文件区域对原理的区域进行覆盖

# 1.拷贝文件
# import sys #倒入sys模块
# l = sys.argv #把命令行中解释器后空格分割的所有参数都存成列表
# src_file=l[1] #源文件路径
# des_file=l[2] #要copy到所在目录路径
# with open(r‘%s‘%src_file,‘rb‘) as f,#     open(r‘%s‘%des_file,‘wb‘) as f1:
#     #这里用字符串格式化是为了解决windows路径\转义符的问题
#     for line in src_file:
#         des_file.write(line)

拷贝文件知识

  

原文地址:https://www.cnblogs.com/Dominic-Ji/p/8630601.html

时间: 2024-08-28 22:32:57

文件操作实例的相关文章

Java最全文件操作实例汇总

本文实例汇总了Java文件操作.分享给大家供大家参考,具体如下: 1.创建文件夹 ? 1 2 3 4 5 6 7 8 9 10 11 //import java.io.*; File myFolderPath = new File(%%1); try { if (!myFolderPath.exists()) { myFolderPath.mkdir(); } } catch (Exception e) { System.out.println("新建目录操作出错"); e.print

Python(文件操作实例)

给定一个文件:以及给定的字符,比如"a"; 统计字符个数:(可选) # 文件的打开操作f = open("wyl.txt","r")# 文件的读取操作content = f.read()# 用户输入需要统计的字符:receiveData = input("请输入需要统计的字符:")count = 0for temp in content: if temp == receiveData: count = count+1# 输出统

C#中简单的文件操作实例

using System; using System.IO; namespace Demo { class Program { static string tmpPath = @"D:/LgsTest/DiretoryTest"; static void Main(string[] args) { //CreateDirectory(tmpPath); ErgodicDirectory(@"D:\LgsTest\C#练习\ShenRuLiJieC#"); Conso

Path文件操作实例

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AddProduct.aspx.cs" Inherits="WebApplication1.AddProduct" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w

HTML5 本地文件操作之FileSystemAPI实例(二)

文件操作实例整理二 1.删除文件.复制文件.移动文件 //获取请求权限 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(window.TEMPORARY, 5 * 1024, initFs, errorHandler); function initFs(fs) { //删除文件 fileEntry.remove() fs.

python解析xml文件操作的例子

python解析xml文件操作实例,操作XML文件的常见技巧. xml文件内容: <?xml version="1.0" ?> <!--Simple xml document__chapter 8--> <book> <title> sample xml thing </title> <author> <name> <first> ma </first> <last>

Python基础:Python函数、文件操作、递归

函数参数 函数参数包括位置参数,关键字参数,动态参数(*args, **args)三种. 传参的过程是形式参数的赋值. *args传入的参数是元组形式,**args传入的参数是字典形式. 示例代码如下:(这部分直接看代码实例会更清楚静态参数与动态参数如何混用) 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # def story(**kwargs): 4 # return 'Once upon a time,there was a ' 5

QT开发(二十四)——QT文件操作

QT开发(二十四)--QT文件操作 一.QT文件操作简介 QT中的IO操作通过统一的接口简化了文件与外部设备的操作方式,QT中文件被当作一种特殊的外部设备,文件操作与外部设备操作相同. 1.IO操作的主要函数接口 打开设备:bool open(OpenMode mode) 读取数据:QByteArray read(qint64 maxSize) 写入数据:qint64 write(const QByteArray & byteArray) 关闭设备:void close() IO操作的本质是连续

小何讲Linux: 基本文件操作和实例

文件操作的基本概念参见博客: 小何讲Linux: 底层文件I/O操作 1.  函数说明 open()函数:是用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数. 所谓打开文件实质上是在进程与文件之间建立起一种连接,而"文件描述符"唯一地标识着这样一个连接 close()函数:是用于关闭一个被打开的文件.当一个进程终止时,所有被它打开的文件都由内核自动关闭,很多程序都使用这一功能而不显示地关闭一个文件. read()函数:是用于将从指定的文件描述符中读出的数据