标签: file-io

从python中的gzip文件中读取utf-8字符

我试图在python中读取一个gunzipped文件(.gz),但我遇到了一些麻烦.

我使用gzip模块读取它,但文件被编码为utf-8文本文件,因此最终它会读取无效字符并崩溃.

有谁知道如何读取编码为utf-8文件的gzip文件?我知道有一个编解码器模块可以提供帮助,但我无法理解如何使用它.

谢谢!

import string
import gzip
import codecs

f = gzip.open('file.gz','r')

engines = {}
line = f.readline()
while line:
    parsed = string.split(line, u'\u0001')

    #do some things...

    line = f.readline()
for en in engines:
  print(en)
Run Code Online (Sandbox Code Playgroud)

python file-io gzip utf-8

27
推荐指数
4
解决办法
2万
查看次数

fclose返回值检查

是否需要检查fclose的返回值?如果我们已成功打开文件,它可能无法关闭的可能性有多大?

谢谢!

问候,杰伊

c file-io

27
推荐指数
3
解决办法
2万
查看次数

在不知道行长度的情况下从文件读取行

我想逐行读取文件,而不知道以前的行长度.这是我到目前为止所得到的:

int ch = getc(file);
int length = 0;
char buffer[4095];

while (ch != '\n' && ch != EOF) {
    ch = getc(file);
    buffer[length] = ch;
    length++;
}

printf("Line length: %d characters.", length);

char newbuffer[length + 1];

for (int i = 0; i < length; i++)
    newbuffer[i] = buffer[i];

newbuffer[length] = '\0';    // newbuffer now contains the line.
Run Code Online (Sandbox Code Playgroud)

我现在可以计算出行长度,但仅适用于短于4095个字符的行,加上两个char数组似乎是执行任务的一种尴尬方式.有没有更好的方法来做到这一点(我已经使用了fgets(),但被告知它不是最好的方式)?

--Ry

c file-io

27
推荐指数
2
解决办法
3万
查看次数

如何在Python中逐字节读取文件以及如何将bytelist打印为二进制文件?

我正在尝试逐字节读取文件,但我不知道该怎么做.我试着这样做:

file = open(filename, 'rb')
while 1:
   byte = file.read(8)
   # Do something...
Run Code Online (Sandbox Code Playgroud)

那么这会使变量字节在每个循环开始时包含8个下一位吗?这些字节究竟是什么并不重要.唯一重要的是我需要读取8位堆栈中的文件.

编辑:

此外,我在列表中收集这些字节,我想打印它们,以便它们不打印为ASCII字符,但作为原始字节,即当我打印该bytelist时,它将结果显示为

['10010101', '00011100', .... ]
Run Code Online (Sandbox Code Playgroud)

python file-io byte

27
推荐指数
3
解决办法
9万
查看次数

如何将"浏览到文件"对话框添加到VB.NET应用程序

在VB.NET Windows窗体应用程序中,如何为某人添加单击按钮或图像的功能,并打开文件浏览器以浏览到文件并将其路径分配给变量,以便将该文件复制到另一个特定路径?

vb.net file-io

27
推荐指数
2
解决办法
14万
查看次数

如何从文件路径名中提取文件名?

我需要将所有文件从源文件夹移动到目标文件夹.如何从文件路径名中轻松提取文件名?

string newPath = "C:\\NewPath";

string[] filePaths = Directory.GetFiles(_configSection.ImportFilePath);
foreach (string filePath in filePaths)
{
  // extract file name and add new path 
  File.Delete(filePath);
}
Run Code Online (Sandbox Code Playgroud)

.net c# file-io

27
推荐指数
4
解决办法
7万
查看次数

从控制台生成/打开CSV - 文件格式错误

我使用控制台应用程序写出一个逗号分隔文件,而不是使用Process打开文件.将查询结果转储到excel是一种快速而又脏的方法.

有一段时间这很好用,但最近我开始得到" 你试图打开的文件'blah.csv',格式与文件扩展名不同 ".

而且点击"是"后

Excel检测到blah.csv是一个SYLK文件,但无法加载它.文件有错误或不是SYLK文件格式.单击"确定"以尝试以其他格式打开文件.

按OK打开它,并正确显示.

我在网络世界中看到了一些添加内容处置标题的解决方案,但由于我使用进程打开它,我无法应用该修复.

我的代码打开文件:

ProcessStartInfo info = new ProcessStartInfo();
info.FileName = filePath;
info.UseShellExecute = true;
Process.Start(info);
Run Code Online (Sandbox Code Playgroud)

如果我在Notepad ++中打开文件并显示所有字符,它只显示为具有CR LF行结尾的常规CSV.

经过一番调查,看起来标题行正在触发错误.如果我只是在标题之前写一个空行,那么错误就会消失.标题看起来像这样:

heading1,heading2,heading3 CRLF

c# excel file-io export-to-excel

27
推荐指数
2
解决办法
8261
查看次数

OSX上每个进程的最大打开文件句柄数(以及如何增加)

编辑:我现在有一个解决方案,但我真的很清楚简要描述不同的限制是什么,即由FD_SIZE,launchtl限制文件,sysctl -w kern.maxfilesperproc,ulimit等设置的限制.

有人可以帮我理解OSX上打开文件句柄的限制.ulimit给了我一个答案:

$ ulimit -a
...
open files                      (-n) 256
Run Code Online (Sandbox Code Playgroud)

我无法ulimit改变这一点,但人们建议使用launchctl(例如http://usrinapto.wordpress.com/2010/03/06/mac-os-x-10-6-max-open-files-too-many -open-files /)

但是,使用它不会改变报告的限制ulimit.

但是,我的应用程序似乎能够在崩溃之前打开10k文件lsof,例如:

$ lsof -p 87599 | wc
10279   92505 1418903
Run Code Online (Sandbox Code Playgroud)

(它可靠地在10279和10305打开的文件之间崩溃)

所以有明显不同的限制.我也看过(在上面的链接上)的谈话FD_SETSIZE.

有人可以向我解释不同的限制是什么,以及它们是如何设置的?

如果它是相关的,我正在使用SWIG包装一个用于Java的C/C++库.

编辑:我也尝试过:

sudo sysctl -w kern.maxfiles=20000
Run Code Online (Sandbox Code Playgroud)

没有成功.也

#define FD_SETSIZE 20000
Run Code Online (Sandbox Code Playgroud)

没有效果.

编辑:也尝试过

launchctl limit maxfiles 20000 20000
Run Code Online (Sandbox Code Playgroud)

没有效果.

编辑:解决方案:

sysctl -w kern.maxfilesperproc=20000
Run Code Online (Sandbox Code Playgroud)

(来自http://krypted.com/mac-os-x/maximum-files-in-mac-os-x/)

编辑:我已经编写了一个小程序来测试它(基于如何在Mac OS X上增加C中"最大打开文件"的限制),并发现我可以要求的最大打开文件数是10240:

#include <sys/resource.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

struct …
Run Code Online (Sandbox Code Playgroud)

macos file-io

27
推荐指数
2
解决办法
3万
查看次数

原子文件写操作(跨平台)

如何构建原子文件写操作?该文件由Java服务编写,并由python脚本读取.
对于记录,读取远远大于写入.但是写入分批发生并且往往很长.文件大小相当于兆字节.

现在我的方法是:

  • 将文件内容写入同一目录中的临时文件
  • 删除旧文件
  • 将临时文件重命名为旧文件名.

这是正确的方法吗?如何避免旧文件被删除但新文件名尚未重命名的情况?

这些编程语言(python和java)是否提供锁定和避免这种情况的构造?

python java file-io file

26
推荐指数
2
解决办法
1万
查看次数

每次打开/关闭Python文件与保持打开直到进程完成

我有大约50 GB的文本文件,我正在检查每行的前几个字符,并将其写入为该起始文本指定的其他文件.

例如.我的输入包含:

cow_ilovecow
dog_whreismydog
cat_thatcatshouldgotoreddit
dog_gotitfromshelter
...............
Run Code Online (Sandbox Code Playgroud)

所以,我想在牛,狗和猫(约200个)类别中处理它们,所以,

if writeflag==1:
    writefile1=open(writefile,"a") #writefile is somedir/dog.txt....
    writefile1.write(remline+"\n")
    #writefile1.close()
Run Code Online (Sandbox Code Playgroud)

那么,什么是最好的方式,我应该关闭吗?否则,如果我保持开放,writefile1=open(writefile,"a")做正确的事情?

python file-io

26
推荐指数
2
解决办法
3万
查看次数

标签 统计

file-io ×10

python ×4

c ×2

c# ×2

.net ×1

byte ×1

excel ×1

export-to-excel ×1

file ×1

gzip ×1

java ×1

macos ×1

utf-8 ×1

vb.net ×1