Articles of 文件

从文件并发处理

考虑下面的代码: std::vector<int> indices = /* Non overlapping ranges. */; std::istream& in = /*…*/; for(std::size_t i= 0; i< indices.size()-1; ++i) { in.seekg(indices[i]); std::vector<int> data(indices[i+1] – indices[i]); in.read(reinterpret_cast<char*>(data.data()), data.size()*sizeof(int)); process_data(data); } 我想使这个代码并行,尽可能快。 使用PPL进行parallizing的一种方法是: std::vector<int> indices = /* Non overlapping ranges. */; std::istream& in = /*…*/; std::vector<concurrency::task<void>> tasks; for(std::size_t i= 0; i< indices.size()-1; ++i) { in.seekg(indices[i]); std::vector<int> data(indices[i+1] […]

为什么读取文件再读取速度更快?

SIZE = 1<<16 def justread(file): with open(file, 'rb') as f: while f.read(SIZE): pass 我第一次在一个700MB的文件上运行这个function需要19秒。 当我重复 再次读取相同的文件所花费的时间下降到0.5secs。 我用很多文件重复了这一点,结果是相似的。 这里发生了什么?

调用posix_spawn时closures所有文件句柄

我想使用posix_spawn(…)(或者非常相似的东西)产生一系列进程。 这个函数接受一个posix_spawn_file_actions_ttypes的参数,它允许我指定如何处理打开的文件句柄。 从文档中我可以确定,所有文件都从调用进程inheritance,并根据posix_spawn_file_actions_t结构中的信息进行修改。 我希望所有文件都未被生成的进程打开(stdin,stdout和stderr除外)。 有谁知道如何做到这一点? 显然这可以在一些实现中使用'POSIX_SPAWN_CLOEXEC_DEFAULT'spawn属性标志来完成,但是这在我的平台上是不可用的。 我也可以使用fcntl(…)在打开文件的时候指定'close on exec',但是我觉得这个问题的一个更加本地化的解决scheme是可取的。

使用lsoffind一个打开的文件最快的方法是什么?

我试图testing一个文件,如果它是打开使用lsof。 有没有比这更快的方法? $result = exec('lsof | grep filename | wc -l'); if($result > 0) { //file is open } 我想他们一定是一个方法来testing一个文件,如果你知道文件名。 我真正需要的是真实的还是虚假的。

为什么.gitignore.txt文件在windows10中显示它的名字?

最近我用webapp生成器搭build了一个项目。 它创build了两个文件.gitignore和.gitattributes 。 两者都显示Text Documenttypes的Text Document扩展但是当我按F12编辑任何一个人的名字,那么它有空的名字。 这里是快照: 我的问题是为什么窗口不显示为.gitignore的名称?

读取和写入一个大文件,而不是一个小块的磁盘一次的缺点?

我主要在基于Windows和Windows CE的系统上工作,其中CreateFile , ReadFile和WriteFile是工作马,无论是在本地Win32域还是在托pipe的.Net域中。 到目前为止,我一直没有任何明显的问题写或读大块文件,而不是循环,直到处理几个较小的块。 我通常将IO工作委托给后台线程,在完成时通知我。 但是看看文件IO教程或“教科书示例”,我经常会发现“小块循环”,而没有解释为什么它被使用,而不是更明显(我敢说!)“一次完成”。 我有什么缺点,我没有明白? 澄清: 通过大文件,我比较了我的单块与多个块。 我提到的多个块的例子通常在Windows CE上有1024个字节的大小,在桌面上有10个大小。 我的大文件通常是二进制文件,如手机等相机的照片,大小顺序为2-10 MB。 换句话说,不接近1 GB。

Linux上的C ++ makefile具有多个* .cpp文件

我正在尝试使用多个文件makefile。 有人能帮我吗? 我有的文件是file1.cpp,file2.h和main.cpp file1.cpp包含我的function。 file2.h包含我的函数的声明。 main.cpp [在代码中包含file2.h] file1.cpp [在代码中包含file2.h] 我做了 all: main gcc -g -Wall -o main main.cpp 但是当我尝试编译时,却给了我大量的错误。 我的代码在日食上工作得很好。

只解压缩特定的扩展名

我有一个zip文件夹包含.jpg,.png,.gif图像的目录。 我想解压每个档案,只把图像放在一个文件夹中,档案的名称。 所以: files/archive1.zip files/archive2.zip files/archive3.zip files/archive4.zip 打开archive1.zip – 以sunflower.jpg,rose_sun.gif。 制作文件夹files / archive1 /并将图像添加到该文件夹​​,以便files / archive1 / folder1.jpg,files / archive1 / rose_sun.gif。 对每个存档执行此操作。 我真的不知道如何做到这一点,所有的build议都是值得欢迎的。 我有超过600个档案,一个自动解决scheme将是一个救生员,最好是一个Linux解决scheme。

Python在打开文件后如何读取文件

我在理解Python被open后如何删除文件的概念方面遇到困难。 这里是代码: >>> import os >>> os.system('cat foo.txt') Hello world! 0 >>> f <_io.TextIOWrapper name='foo.txt' mode='r' encoding='UTF-8'> >>> os.system('rm -f foo.txt') 0 >>> os.system('cat foo.txt') cat: foo.txt: No such file or directory 256 >>> f.read() 'Hello world!\n' >>> 文本和二进制模式给出相同的结果。 我也尝试过大于1Gb的大文件,并在删除后也读取。 即使是非常大的文件, open操作也几乎是瞬间发生。 如果打开的文件不存在,Python从哪里获取数据? 我跑了这个testing python 3.4.3 / 3.5.2 ubuntu 14.04 / 16.04

如何使用schell脚本从文件读取元素,做一些计算和回写?

我只是脚本语言的新手。 现在我有一个文件,里面是: > A1 B1 C1 > A2 B2 C2 > A3 B3 C3 我只想使用shell脚本(bash)按元素读取文件元素。 然后,我想对元素A1,A2和A3进行一些计算,然后将它们写回新文件(或旧文件)。 所以新文件会是(假devise算结果是D1,D2和D3): D1 B1 C1 D2 B2 C2 D3 B3 C3 计算是通过命令“date -d @(A's value)”将Unix历元时间(A的值)转换为人类可读的时间(D的值)。 我尝试使用awk命令: awk '{$1=`date -d @$1`}' test.txt 但它似乎有一些语法错误:>错误是: awk: {$1=`date -d @$3`} awk: ^ invalid char '`' in expression