file.close,fileclose之后为什么值变了
Python中file.close方法的使用与否
如果文件打开方式是'w',且最后没有写file.close()的话,文件会是空的。
这样会由于程序员的疏忽造成不好的后果。从python2.5开始,你可以避免显式地使用file.close()函数!
file(文件)对象常用函数
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
1、file.close()
close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。
当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。
举例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开文件
fo = open("runoob.txt", "wb")
print "文件名为: ", fo.name
# 关闭文件
fo.close()
2、file.flush()
flush()? 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
举例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 打开文件
fo = open("runoob.txt", "wb")
print "文件名为: ", fo.name
# 刷新缓冲区
fo.flush()
# 关闭文件
fo.close()
3、file.fileno()
fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作。
举例.........
使用File操作后,怎么释放文件,File.close根本就没有
FileStream.Close方法关闭当前文件流并释放与之关联的所有资源(如文件磁盘缓冲区)。
注意:创建文件流后,无论是读取还是写入操作,最后必须用Close方法关闭文件流!这样做的目的一方面是释放文件操作所占用的系统资源,另一方面避免文件有出现无法预料的结果。
【例1】写文件操作后关闭文件流
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 打开文件流准备写入操作
FileStream fs = new FileStream("d:\\data.txt",
FileMode.Create,
FileAccess.Write);
string text = "输入文本文件的信息:你好,世界!";
byte[] b = Encoding.Default.GetBytes(text);
fs.Write(b, 0, b.Length);
// 使得所有缓冲的数据都写入到文件中
fs.Flush();
// 方法关闭当前文件流
fs.Close();
}
}
}
【例2】读文件操作后关闭文件流
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using System.Text;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
// 打开文件流准备读取操作
FileStream fs = new FileStream("d:\\data.txt",
FileMode.Open,
FileAccess.Read);
// 文件读入缓冲区
byte[] buf = new byte[1024];
// 读取文件
int byteNum = fs.Read(buf, 0, buf.Length);
// 关闭文件流!
fs.Close();
// 显示读取的内容
string text = Encoding.Default.GetString(buf, 0, byteNum);
Console.WriteLine(text);
}
}
}
本回答由电脑网络分类达人 吕明推荐
评论
1 2
protorock0627
采纳率:86% 来自团队:C.Net开发 擅长: C#/.NET 数据库DB 嵌入式
其他回答
close的作用就是关闭文件流。
如果你开启了文件流在读取一个文件却没有close,那么这个文件一直被你的程序在占用。别人就无法再操作这个文件。(当然,读还是可以的,只是无法写这个文件)
比如,你有两个程序,同时读取一个文件,并且不close,那么无论哪个程序都无法修改或删除这个文件。
我看了你的追问,关闭程序就可以不占用内存。是的,关闭程序就把内存给释放了,可问题是,你这个程序是短暂的寿命吗?你开发程序出来是给别人用的吧,那么这个程序就会一直开启状态,你不能随便去关闭它。比如,一个网站,那是一直开启放在互联网上的。一个游戏,一直开启给玩家玩的。你可以经常去把这个程序关闭吗?无论是网站还是游戏,都会有很多用户访问你的程序,如果不做到释放内存,100个用户就要占用100个文件流,1000个用户占用1000个,你的程序和服务器能够支撑不住那么多信息的。所以要做到及时释放内存,保证程序能够正常运行。
文件读写操作以后如果不输入file.close语句会怎么样
文件或者类文件对象的close方法的作用主要有两个:
1. 释放资源。打开一个文件,对文件进行操作,这个过程需要消耗计算机的硬件资源,最主要的就是内存(比如接下来要说的"读写缓冲区"),调用close方法后,文件对象占用的资源就会被释放。
2.清空缓冲区。当你打开一个文件向里面写入数据或者从某个url获取远程html想对其进行解析,这时候就会用到缓冲区的概念。比如你要写入文件,你想写入文件的数据并不会直接输出到那个文件中,而是首先被输出到缓冲区,等到缓冲区满或者手动刷新时,才将缓冲区中已有的数据输出到文件中(这样设计的原因是避免了频繁I/O,提高了效率)。因此,close方法的另一个作用就是清空缓冲区中的数据(当然你也可以调用flush这样的方法)
如果不调用close方法关闭文件,首先占用的硬件资源被浪费,其次数据可能无法像预期的那样正确输出到文件,可能出现空白文件或者数据输出不完整的情况。此外,由于文件对象未关闭,你仍然可能对它进行操作,误操作的话会给调试惹不少麻烦,也有可能成为一种不安全因素。