Questions tagged «io»

在计算中,输入/输出或I / O是指信息处理系统(例如计算机)与外界(可能是人类)或其他信息处理系统之间的通信。


9
非阻塞I / O真的比多线程阻塞I / O快吗?怎么样?
我在网上搜索了有关阻止I / O和非阻止I / O的一些技术细节,我发现一些人指出,非阻止I / O比阻止I / O更快。例如在本文档中。 如果我使用阻塞I / O,那么当前被阻塞的线程当然不能做任何其他事情……因为它被阻塞了。但是,一旦某个线程开始被阻塞,操作系统就可以切换到另一个线程,而不必切换回另一个线程,直到对该阻塞的线程有必要做些事情为止。因此,与基于事件的非阻塞方法相比,只要系统上还有另一个线程需要CPU并且未被阻塞,那么CPU空闲时间就不会更多了? 除了减少CPU空闲时间以外,我还看到了另一个选择,可以增加计算机在给定时间范围内可以执行的任务数量:减少切换线程带来的开销。但是如何做到这一点?开销是否足够大以显示可衡量的效果?这是关于如何描述其工作原理的想法: 要加载文件的内容,应用程序将此任务委托给基于事件的I / O框架,并传递回调函数和文件名。 事件框架委托给操作系统,该操作系统对硬盘的DMA控制器进行编程,以将文件直接写入内存 事件框架允许进一步的代码运行。 在完成磁盘到内存的复制后,DMA控制器将引起中断。 操作系统的中断处理程序将基于事件的I / O框架通知文件已完全加载到内存中。它是如何做到的?使用信号?? 事件I / O框架中当前运行的代码完成。 基于事件的I / O框架检查其队列,并查看步骤5中的操作系统消息,并执行在步骤1中获得的回调。 那是怎么回事?如果没有,它如何工作?这意味着事件系统可以工作而无需显式地触摸堆栈(例如,真正的调度程序需要在切换线程时备份堆栈并将另一个线程的堆栈复制到内存中)?这实际上节省了多少时间?还有更多吗?


2
ValueError:对关闭的文件进行I / O操作
import csv with open('v.csv', 'w') as csvfile: cwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL) for w, c in p.items(): cwriter.writerow(w + c) 这里,p是一本字典,w并且c都是字符串。 当我尝试写入文件时,它报告错误: ValueError: I/O operation on closed file.
109 python  csv  file-io  io 

4
在同步读取/写入端口时避免递归?
Rebol 3中的所有端口操作都是异步的。我发现进行同步通信的唯一方法是调用wait。 但是在这种情况下调用wait的问题是它将检查所有打开的端口的事件(即使它们不在传递给wait的端口块中)。然后他们调用响应的事件处理程序,但是可以在这些事件处理程序之一中进行读/写。这可能导致递归调用“等待”。 我该如何解决?
108 asynchronous  io  rebol  rebol3 


9
相当于IOUtils.toString(InputStream)的番石榴
Apache Commons IO有一个很好的便捷方法IOUtils.toString()来读取InputStream字符串。 由于我正尝试从Apache Commons转移到Guava:Guava中有等同的功能吗?我查看了com.google.common.io程序包中的所有类,但几乎找不到任何简单的东西。 编辑:我理解并赞赏字符集的问题。碰巧,我知道我所有的来源都是ASCII(是,ASCII,不是ANSI等),因此在这种情况下,编码对我来说不是问题。
106 java  io  inputstream  guava 

5
读取完整文件而不在Java中使用循环
可能的重复: 如何从文件内容创建Java字符串将 整个文本文件转换为Java中的字符串 我正在尝试使用FileReader读取文件的内容。但我想不逐行读取文件。是否可以不循环地读取整个文件。我正在使用以下代码 try { File ff=new File("abc.txt"); FileReader fr=new FileReader(ff); String s; while(br.read()!=-1) { s=br.readLine(); } } catch(Exception ex) { ex.printStackTrace(); }
103 java  file  io 

3
使用FileSystemWatcher监视目录
我正在使用Windows窗体应用程序监视目录,并将放置在其中的文件移动到另一个目录。 目前,它将文件复制到另一个目录,但是当添加另一个文件时,它将以没有错误消息结束。有时它确实会复制两个文件,然后再复制第三个文件。 这是因为我使用的是Windows Form Application而不是Console app?有什么办法可以阻止程序结束并继续监视目录? private void watch() { this.watcher = new FileSystemWatcher(); watcher.Path = path; watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; watcher.Filter = "*.*"; watcher.Changed += OnChanged; watcher.EnableRaisingEvents = true; } private void OnChanged(object source, FileSystemEventArgs e) { //Copies file to another directory. } public …

5
Python逐行写入CSV
我有通过http请求访问的数据,并由服务器以逗号分隔的格式发送回去,我有以下代码: site= 'www.example.com' hdr = {'User-Agent': 'Mozilla/5.0'} req = urllib2.Request(site,headers=hdr) page = urllib2.urlopen(req) soup = BeautifulSoup(page) soup = soup.get_text() text=str(soup) 文本内容如下: april,2,5,7 may,3,5,8 june,4,7,3 july,5,6,9 如何将这些数据保存到CSV文件中。我知道我可以按照以下步骤做一些事情,逐行进行迭代: import StringIO s = StringIO.StringIO(text) for line in s: 但是我不确定现在如何正确地将每一行写入CSV 编辑--->感谢您提供的反馈,该解决方案非常简单,可以在下面看到。 解: import StringIO s = StringIO.StringIO(text) with open('fileName.csv', 'w') as f: for line …
100 python  string  file  csv  io 

7
为什么我不能在打开的文件上两次调用read()?
对于我正在做的练习,我试图使用read()方法两次读取给定文件的内容。奇怪的是,当我第二次调用它时,似乎没有将文件内容返回为字符串? 这是代码 f = f.open() # get the year match = re.search(r'Popularity in (\d+)', f.read()) if match: print match.group(1) # get all the names matches = re.findall(r'<td>(\d+)</td><td>(\w+)</td><td>(\w+)</td>', f.read()) if matches: # matches is always None 我当然知道这不是最有效或最好的方法,这不是重点。问题是,为什么我不能打read()两次电话?我是否需要重置文件句柄?还是关闭/重新打开文件以执行此操作?
98 python  io 

18
hadoop方案无文件系统:文件
我正在尝试NaiveBayesClassifer使用hadoop 运行一个简单的程序,出现此错误 Exception in thread "main" java.io.IOException: No FileSystem for scheme: file at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1375) at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66) at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1390) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:196) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:95) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:180) at org.apache.hadoop.fs.Path.getFileSystem(Path.java:175) at org.apache.mahout.classifier.naivebayes.NaiveBayesModel.materialize(NaiveBayesModel.java:100) 代码: Configuration configuration = new Configuration(); NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), configuration);// error in this line.. modelPath指向NaiveBayes.bin文件,并且配置对象正在打印-Configuration: core-default.xml, core-site.xml 我认为是因为罐子,有什么想法吗?
96 java  hadoop  io 


6
如何从标准输入逐行读取?
从标准输入逐行读取的Scala配方是什么?类似于等效的Java代码: import java.util.Scanner; public class ScannerTest { public static void main(String args[]) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ System.out.println(sc.nextLine()); } } }


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.