标签: file-io

在bash中获取文件指针并任意读取行

我有一个 bash 脚本,需要在其中逐行读取文件。我知道通常的工作原理while read line,但我的程序不能很好地适应循环while。我有两个文件,需要在某些条件下逐行比较它们(不是diff:条件是一个文件中的行是否以另一个文件中的行开头)。目前我有一个Java版本的程序,它有三个嵌套循环,两个文件的循环交织在一起,我需要打破嵌套循环(我知道怎么做)。所以我想要一个优雅的解决方案来在 bash 中执行以下基本任务(以下代码是我的 Java 程序):

BufferedReader reader = new BufferedReader(new FileReader(inputFile)); // initialize a file pointer
reader.ready();                                                        // whether the pointer is at the end of the file (used in while and if conditions)
lineStr = reader.readLine();                                           // read next line
Run Code Online (Sandbox Code Playgroud)

我在网上找到的所有解决方案都使用规范while read line结构,但我的程序无法适应它。所以我想以更多的控制来操作文件。

linux io bash file-io

1
推荐指数
1
解决办法
2372
查看次数

Python:查找相同的文件并将它们分组

这是课堂作业的一个组成部分,因此如果我无法按照需要深入探讨,我深表歉意。

总而言之,我需要编写一个 python 函数,对所有相同的文件进行分组(即内容相同但文件名不同的文件)。对它们进行分组的目的是最终创建一个 {string: list} 类型的字典,其中列表是相同文件的组,而键(字符串)只是按字母顺序排序时组中的第一个条目。我们得到了一个文件目录。

到目前为止,我有一个使用 glob 迭代每个文件的程序,并且我还使用 filecmp.cmp(file1,file2) 来查找相同的文件。我正在努力解决的是成功比较最多 1000 个文件所需的逻辑。我确信有一种更 Pythonic 的方法来完成此任务,而不是比较 file1 与 file2、file1 与 file3 等。

总之,我知道如何迭代文件列表,并且一旦拥有相同文件组,我知道如何创建字典......我只是对如何有效获取文件组有点迷失。

示例实现 有 7 个文件:A、AA、AAA、B、BB、C、D。文件 A、AA 和 AAA 相同,B 和 BB 相同,而 C 和 D 唯一。我最终的字典应该是:

{'A':[A,AA,AAA],'B':[B,BB],'C':[C],'D':[D]}

在此先感谢您的时间!

python file-io dictionary python-3.x

1
推荐指数
1
解决办法
736
查看次数

在 Python 中多次迭代打开的文本文件

当然,这个问题以前已经被问过,但我找不到这个问题。

据我了解,在Python中(我使用的是3.3,但这对2.x和3.x来说是通用的)你不能在打开的文本文件上多次迭代,这是因为光标被移动到末尾并且不会返回到下一个可迭代循环的开头。因此它的行为不像一个更典型的可迭代对象。

我想知道如何将光标返回到开头,或者至少在要读取的打开文件上连续两个 for 循环。

谢谢。

python iteration file-io cursor

1
推荐指数
1
解决办法
3951
查看次数

如何格式化从文件加载的文本?

我有一个.htm类似模板的文件,我想阅读内容并更新页面的特定部分。该文件具有典型的 html 格式,在某些时候我添加了特殊字符串{0}以便能够对其进行格式化。我还确保这{0}是唯一一次发生的情况。

我已经尝试过以下操作,但引发了异常Input string was not in a correct format

sText = @File.ReadAllText("template.htm"));
formated = string.Format(sText, "Add some additional text here");
Run Code Online (Sandbox Code Playgroud)

哪一个是实现这个的正确方法?

谢谢

编辑

变量(调试)的内容如下所示:

    "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head>\r\n    <title></title>\r\n    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />\r\n    <style type=\"text/css\">\r\nbody {\r\n  margin: 0;\r\n  mso-line-height-rule: exactly;\r\n  padding: 0;\r\n  min-width: 100%;\r\n}\r\ntable {\r\n  border-collapse: collapse;\r\n  border-spacing: 0;\r\n}\r\ntd {\r\n  padding: 0;\r\n  vertical-align: top;\r\n}\r\n.spacer,\r\n.border {\r\n  font-size: 1px;\r\n  line-height: 1px;\r\n}\r\n.spacer {\r\n  width: 100%;\r\n}\r\nimg {\r\n  border: …
Run Code Online (Sandbox Code Playgroud)

c# file-io text string-formatting

1
推荐指数
1
解决办法
1971
查看次数

Java IO 创建/追加文件

我试图创建一个文件,如果它不存在,如果它存在则追加到它。这是最好的方法吗?我个人不确定在一个方法中包含两个 try catch 是否好?

   public static void main(String [] args)
    {
        String fileLocation = "/temp/";
        String name = "Bob";
        String timeStamp = "1988-03-15";
        Path path = Paths.get(fileLocation+ "info.log");

        if(!Files.exists(path)){
            try {
                Files.createFile(path);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        try (BufferedWriter writer = Files.newBufferedWriter(path, StandardCharsets.UTF_8, StandardOpenOption.APPEND)) {
            SimpleDateFormat tTimeFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS");
            writer.write(tTimeFormatter.format(System.currentTimeMillis()) + " name: " + name + " Timestamp: "+ timeStamp);
            writer.newLine();
        } catch (IOException e) {
          System.out.print(e.getStackTrace());
        }
    }
Run Code Online (Sandbox Code Playgroud)

java file-io file

1
推荐指数
1
解决办法
1980
查看次数

二进制写入SystemVerilog

我尝试在测试台中的 SystemVerilog 中编写二进制文件。

int file   = $fopen(path,"w");
if (!file) begin
    $error("File could not be open: ", path);
    return;
end
$fwrite(file, "%u", 32'h4D424D42);
$fclose(file);
Run Code Online (Sandbox Code Playgroud)

并得到结果:02 0c 02 0c

我使用 QuestaSum 10.2c。为什么我得到这个结果?谢谢。

verification file-io system-verilog questasim

1
推荐指数
1
解决办法
7623
查看次数

使用转义字符从 Sysfs 路径读取长值

我正在使用C文件 IOsysfslinux. 寄存器的路径和样本值如下:

cat /sys/class/powercap/intel-rapl/intel-rapl\:0/energy_uj
56039694184
Run Code Online (Sandbox Code Playgroud)

代码:添加\intel-rapl\考虑unknown escape sequence

#define FILE_SIZE 512

static FILE *fp;
char filename[FILE_SIZE];

char TEMP[FILE_SIZE];
int FILE, READ;
long int POWER;

FILE = open("/sys/class/powercap/intel-rapl/intel-rapl\\:0/energy_uj", O_RDONLY);
READ = read(FILE, TEMP, sizeof(TEMP));
POWER= strtod(TEMP,NULL);
close(FILE);

sprintf(filename,"test.csv");
fp  = fopen(filename,"a+");
fprintf(fp,"\n");
fprintf(fp, "%ld", POWER);
Run Code Online (Sandbox Code Playgroud)

代码编译时没有任何错误,但在输出文件中我得到的值为0. 这是由于我如何考虑转义序列吗?

谢谢。

c linux file-io sysfs

1
推荐指数
1
解决办法
2327
查看次数

Qt - 为什么无法使用 QFile 和从 FileDialog 获取的目录读取文件?

我正在使用 QFile 读取 Qt 5.12 上的文件。我尝试从计算机中读取文件,但是当我使用从 FileDialog 读取的目录时,其前缀为“file:///”。谁能告诉我为什么这是错误的以及如何使用从 FileDialog 获取的 URL?

谢谢!

QFile file("C:/Users/HuuChinhPC/Desktop/my_txt.txt"); // this work
//QFile file("file:///C:/Users/HuuChinhPC/Desktop/my_txt.txt"); //didn't work
QString fileContent;
if (file.open(QIODevice::ReadOnly) ) {
    QString line;
    QTextStream t( &file );
    do {
        line = t.readLine();
        fileContent += line;
     } while (!line.isNull());

    file.close();
} else {
    emit error("Unable to open the file");
    return QString();
}
Run Code Online (Sandbox Code Playgroud)

c++ file-io qt qml qtquick2

1
推荐指数
1
解决办法
647
查看次数

从 HTML 文件输入读取 JSON

如果我有一个输入:

<input type="file" id="upload" onchange="getFile(this)">
Run Code Online (Sandbox Code Playgroud)

我的用户将上传一个 JSON 文件(作为纯文本,所以我必须使用JSON.parse()),我如何获取该文件并通过实际获取数据getFile()

在 中getFile(element),我尝试过使用element.files[0],但似乎不包含实际数据。我也看过这里这里这里,但这些都不能解决我的问题。MDN 上的这个资源看起来很有前途,但我不太明白。

我想要一个涉及 或 的解决URL.createObjectURL()方案FileReader()

另外,在任何人在评论中发布此内容之前,我确实了解这些解决方案并不适用于所有浏览器,我想从前端执行此操作。

html javascript file-io json

1
推荐指数
1
解决办法
2669
查看次数

为什么 Rust 的 read_to_end 不将文件读入缓冲区?

代码(根据我的实际问题改编)非常简单,但我无法弄清楚我缺少什么。它将正确写入文件。但它的输出是Buffer: [],由于某种原因,没有从文件中读取任何内容。它是什么?

use std::io::{Read, Write};

fn main() {
    let mut test_file = std::fs::OpenOptions::new()
        .read(true)
        .write(true)
        .open("testfile.txt")
        .expect("Creating file failed");
    let test_str = String::from("This is only a test!");

    test_file
        .write_all(test_str.as_bytes())
        .expect("Writing file failed");

    let mut buffer: Vec<u8> = Vec::new();
    test_file
        .read_to_end(&mut buffer)
        .expect("Reading file to buffer failed!");

    println!("Buffer: {:?}", &buffer);
}
Run Code Online (Sandbox Code Playgroud)

file-io rust

1
推荐指数
1
解决办法
1206
查看次数