标签: fwrite

Python写入后文件开头出现奇怪字符

我想通过 python 脚本自动替换很多无聊的 C# 代码。我读取文件的所有行,转换它们,截断整个文件,写入新字符串并关闭它。

f = open(file, 'r+')
text = f.readlines()
# some changes
f.truncate(0)
for line in text:
    f.write(line)
f.close()
Run Code Online (Sandbox Code Playgroud)

我所有的修改都写下来了。但文件开头出现了一些奇怪的字符。我不知道如何避免它们。即使我打开encoding='utf-8-sig'它也没有帮助。

我尝试截断除第一行之外的整个文件,如下所示:

import sys
f.truncate(sys.getsizeof(text[0]))
for index in range(1, len(text), 1):
    f.write(text[index])
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,不止第一行正在写入,而不仅仅是第一行。

编辑 我尝试过这个:

f.truncate(len(text[0]))
for index in range(1, len(text), 1):
    f.write(text[index])
Run Code Online (Sandbox Code Playgroud)

第一行写的是正确的,但下一行有同样的问题。所以我认为这些字符来自文件末尾,我尝试在它们后面写入。

python windows file fwrite

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

为什么C用5个字节来写/写数字10,而用4个字节来写9或11?

Windows 上的 GCC

#include <stdio.h>
#include <stdlib.h>

struct test {
    int n1;
    int n2;
};

int main() {
    FILE *f;
    
    f = fopen("test.dat", "w");
    struct test test1 = {10, 10};
    fwrite(&test1, sizeof(struct test), 1, f);
    fclose(f);
    
    struct test test2;
    f = fopen("test.dat", "r");
    while(fread(&test2, sizeof(struct test), 1, f))
        printf("n1=%d n2=%d\n", test2.n1, test2.n2);
    fclose(f);
    
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我将 test1 设置为,10,10则 fwrite 会将10 个字节写入文件:0D 0A 00 00 00 0D 0A 00 00 00

(每个4字节int将在其前面填充0D回车符)

如果我将 test1 设置为, …

c struct fwrite

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

MATLAB FREAD/FWRITE

我想使用matlab的fwrite命令更改大型二进制文件中几个字节的值.我想要做的是使用fopen(文件名,'r +',精度)打开文件,然后使用fread(fid,NUM,'int32')读取文件(这一切都有效).一旦到达我要写入(覆盖)下一个字节值的文件位置,我就使用命令:fwrite(fid,variable_name,'int32').然后我关闭文件:fclose(fid).

好的,那么我回去重新读取文件,这些字节没有改变!

那么这不可能吗?或者'r +'使用错误的东西?

谢谢.

binary file-io matlab file fwrite

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

PHP New Line无效

嗨,我正在尝试创建一些代码,首先读取文件的现有内容,然后在新行上添加新的代码行,但我正在使用的代码只是将新文本添加到已存在的行上而不是新线...

这是我正在使用的代码:

<?php

$id = $_GET['id'];

$userfile = "user1.txt";
$fo = fopen($userfile, 'r') or die("can't open favourites file");
$currentdata = fread($fo, filesize($userfile));
fclose($fo);
$fw = fopen($userfile, 'w') or die("can't open favourites file");
$currentprocessed = "$currentdata\n";
fwrite($fw, $currentprocessed);
fwrite($fw, $id);
fclose($fw);
?>
Run Code Online (Sandbox Code Playgroud)

我尝试了一系列不同的想法但没有任何效果,任何帮助都会受到赞赏.

php fopen newline fwrite

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

写不写

 $fp = fopen('log.txt', 'w');
 fwrite($fp, 'Missing gallery image for: ' . $row['toolbar_id'] . '\n');
Run Code Online (Sandbox Code Playgroud)

上面的代码不是写入文件.这$row['toolbar_id']是每个循环的a值.有什么建议?没有PHP错误,因为文件打开,因为我已调试该部分.

php fwrite

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

PHP文件用新行写

我正在和一个文本文件聊天室.非常简单,但我不希望它在服务器上放置阻尼器.无论如何.当我尝试发送消息时,它会将附加的消息放在同一行上

Alan,5/6/12,message<br>Joe,5/6/12,hello<br>
Run Code Online (Sandbox Code Playgroud)

我希望它是

Alan,5/6/12,message
Joe,5/6/12,hello
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的.

$total = 'Alan,5/6/12,hello joe<br>\r\n';
$fn = "messages.txt";
$file = fopen($fn,"a");
fwrite($fn,$total);
fclose($fn);
Run Code Online (Sandbox Code Playgroud)

谢谢.

php fopen fwrite

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

在C/C++中将数据从一个文件复制到另一个文件的最快方法?

在我的代码中,我有一种情况需要将数据从一个文件复制到另一个文件.我想出的解决方案如下:

const int BUF_SIZE = 1024;
char buf[BUF_SIZE];

int left_to_copy = toCopy;
while(left_to_copy > BUF_SIZE)
{
    fread(buf, BUF_SIZE, 1, fin);
    fwrite(buf, BUF_SIZE, 1, fout);
    left_to_copy -= BUF_SIZE;
}

fread(buf, left_to_copy, 1, fin);
fwrite(buf, left_to_copy, 1, fout);
Run Code Online (Sandbox Code Playgroud)

我的主要想法是可能有类似memcpy的东西,但是对于文件中的数据.我只给它两个文件流和总字节数.我搜索了一下,但我找不到任何这样的东西.

但是如果没有这样的东西,我应该使用什么缓冲区大小来实现最快的传输?更大意味着更少的系统调用,但我认为它可能会破坏系统上的其他缓冲或缓存.我应该动态分配缓冲区,以便只进行一对读/写调用吗?在这种特定情况下,典型的传输大小是从几KB到十几MB.

编辑:对于操作系统特定信息,我们使用的是Linux.

EDIT2:

我尝试使用sendfile,但它没有用.它似乎写了适量的数据,但它是垃圾.

我用上面这样的东西替换了我的例子:

fflush(fin);
fflush(fout);
off_t offset = ftello64(fin);
sendfile(fileno(fout), fileno(fin), &offset, toCopy);
fseeko64(fin, offset, SEEK_SET);
Run Code Online (Sandbox Code Playgroud)

我添加了flush,offest,并且一次寻找一个,因为它似乎没有工作.

c c++ file-io fwrite fread

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

如何在现有数组中附加数据而不覆盖整个数组

这是我的代码,在这段代码中,我通过函数read_from_json读取现有数组,该函数将JSON转换为数组,现在从远程数据中获取新数据,因此我必须将这些数据附加到现有数组中而不覆盖整个数据阵列.就像我得到一个id一样,它使用in_array函数进行搜索,如果找不到,则向其发送消息,然后将唯一的特定条目附加到现有数组.由于foreach迭代存在一个问题,所以它会覆盖所有数组,我还能做些什么.请看一下这段代码:

$read_data = $this->read_from_json( 'xyz.json' );

foreach ( $projects_id_tickcamp as $tick_id => $base_id ) {

            if ( !$this->in_array( $base_id['base_id'], $read_data ) ) {

                echo '<b>do post message function for ' . $tick_id . ' ' . $base_id['base_id'] . '</b><br />';

                $i = count( $read_data );

                while ( $i >= count( $base_id['base_id'] ) ) {

                    echo 'post message start' .'<br />';
                    $i++;
                    break;
                    $projects_id_tickcamp[$tick_id]['message_id'] = 1;

                }

                //echo 'posted message id of ' . $base_id['basecamp_id'] . '<br …
Run Code Online (Sandbox Code Playgroud)

php arrays fwrite

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

用PHP创建文本文件?

我正在尝试使用PHP来创建文本文件,但我不断收到"无法打开文件"错误.谁能告诉我我做错了什么?

chmod('text.txt', 0777);

$textFile = "text.txt";
$fileHandle = fopen($textFile, 'w') or die("can't open file");
$stringData = "Hello!";
fwrite($fileHandle, $stringData);
fclose($fileHandle);
Run Code Online (Sandbox Code Playgroud)

php text fopen fwrite chmod

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

使用fwrite 777权限是否危险?

我正在测试我的php表单并将所有请求记录到一个单独的文件中.目的是找出表单是否用于垃圾邮件,并希望消除它.

当使用fwrite()记录的要求,是危险的或不需要使用777个权限?有什么选择?

php forms security fwrite

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

标签 统计

fwrite ×10

php ×6

fopen ×3

c ×2

file ×2

file-io ×2

arrays ×1

binary ×1

c++ ×1

chmod ×1

forms ×1

fread ×1

matlab ×1

newline ×1

python ×1

security ×1

struct ×1

text ×1

windows ×1