我想重写一个文件的内容.
到目前为止我所想到的是:
这是最好的方法吗?或者是否有更直接的方式,即不必删除和创建文件,只需更改内容?
当我跟踪我的参考MATLAB脚本时,我找到了带有.mat扩展名的文件.我的问题是:
.mat和.m文件有什么区别?.mat扩展名的文件?# Open new file to write
file = None
try:
file = open(filePath, 'w')
except IOError:
msg = ("Unable to create file on disk.")
file.close()
return
finally:
file.write("Hello World!")
file.close()
Run Code Online (Sandbox Code Playgroud)
上面的代码是从函数中删除的.用户的一个系统正在报告错误:
file.write("Hello World!")
Run Code Online (Sandbox Code Playgroud)
错误:
AttributeError: 'NoneType' object has no attribute 'write'
Run Code Online (Sandbox Code Playgroud)
问题是,如果python未能打开给定文件,'except'块执行并且必须返回,但是控制将转移到抛出给定错误的行.'file'变量的值为'None'.
有什么指针吗?
我有一个Linux应用程序,并行读取150-200个文件(4-10GB).每个文件依次以小的,可变大小的块读取,每个块通常小于2K.
我目前需要从文件集中保持超过200 MB/s的读取速率.磁盘处理这个很好.预计需要超过1 GB/s(目前不在磁盘范围内).
我们已经实现了两个不同的读取系统,它们都大量使用posix_advise:首先是mmaped读取,其中我们映射整个数据集并按需读取.第二个是基于read()/ seek()的系统.
两者都运行良好但仅适用于中等情况,该read()方法更好地管理我们的整体文件缓存并且可以很好地处理100 GB的文件,但是速率受限,mmap能够预先缓存数据使得持续数据速率超过200MB/s易于维护,但无法处理较大的总数据集大小.
所以我的问题来自于:
答:可以在Linux read()上posix_advise调用之外进一步优化类型文件i/o ,或者调整磁盘调度程序,VMM和posix_advise调用是否符合我们的预期?
B:有没有系统的方法让mmap更好地处理非常大的映射数据?
Mmap-vs-reading-blocks 与我正在工作的问题类似,并且提供了一个关于这个问题的良好起点,以及mmap-vs-read中的讨论.
我有一个模块负责读取,处理和写入磁盘的字节.字节通过UDP传入,在汇编各个数据报之后,处理并写入磁盘的最终字节数组通常在200字节到500,000字节之间.偶尔会有一些字节数组,在汇编后,超过500,000字节,但这些数组相对较少.
我现在正在使用FileOutputStream的write(byte\[\])方法.我也在尝试包装FileOutputStreamin BufferedOutputStream,包括使用接受缓冲区大小作为参数的构造函数.
似乎使用的BufferedOutputStream是趋向于略微更好的性能,但我只是开始尝试不同的缓冲区大小.我只有一组有限的样本数据可供使用(来自样本运行的两个数据集,我可以通过我的应用程序管道).是否有一般的经验法则我可以应用于尝试计算最佳缓冲区大小以减少磁盘写入并最大化磁盘写入的性能,因为我知道有关我正在编写的数据的信息?
我使用以下查询来创建CSV文件
SELECT email INTO OUTFILE "mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM users;
Run Code Online (Sandbox Code Playgroud)
但是当我搜索filezilla时,我无法在任何地方找到mydata.csv文件.
知道这个文件存储在哪里吗?
查询成功运行,没有任何错误!任何帮助?
是否有一种不那么丑陋的方式来处理close()关闭两个流的异常:
InputStream in = new FileInputStream(inputFileName);
OutputStream out = new FileOutputStream(outputFileName);
try {
copy(in, out);
} finally {
try {
in.close();
} catch (Exception e) {
try {
// event if in.close fails, need to close the out
out.close();
} catch (Exception e2) {}
throw e; // and throw the 'in' exception
}
}
out.close();
}
Run Code Online (Sandbox Code Playgroud)
更新:所有上述代码都在一个try-catch内,感谢警告.
最后(在答案之后):
一个好的实用方法可以使用Execute Around成语(感谢Tom Hawtin).
我正在建立一个基本的社交网络,在注册时,用户上传了一个显示图像.基本上我想在显示图像时,就像在表单的同一页面上预览一样,只需在选择它之后和表单提交之前.
这可能吗?
当我立即点击图片链接时,Chrome会下载图片而不是打开图片.
即使我右键单击并选择Open link in new tabChrome 仍然下载图像,我必须完成打开文件以便手动查看的额外步骤.
这对我来说就像是一个哑剧型问题,但为什么Chrome不会将"image/png"识别为有效的mime类型以供查看?所有PNG图像在HTML页面中都可以正常显示.
这感觉就像一个非常愚蠢的问题,但我搜索了所有搜索并且无法接近答案.我是世界上唯一一个有这个问题的人吗?
注意:这仅适用于PNG图像.
是否有单行程序来读取Python中文件的所有行,而不是标准:
f = open('x.txt')
cts = f.read()
f.close()
Run Code Online (Sandbox Code Playgroud)
似乎经常这样做,所以必须有一个单行.有任何想法吗?