精华内容
下载资源
问答
  • Python 中open可以操作文件,在文件操作时 需要找到其中某关键字,然后进行插入 、替换或删除等...1. 指定位置插入数据def add_host(file_name, host, group):print file_name, host, groupres= {'status':True,'mes...

    Python 中open可以操作文件,在文件操作时 需要找到其中某关键字,然后进行插入 、替换或删除等操作;

    所以需要 定位文件指针,seek定位操作位置等;且不需要生成新的附件文件,可操作较大的文件;

    1. 指定位置插入数据

    def add_host(file_name, host, group):

    print file_name, host, group

    res= {

    'status':True,

    'message':''

    }

    file_name ='./deploy/hosts' if not file_nameelse file_name

    try:

    i =1

    with open(file_name, 'r')as f:

    with open(file_name, 'r+')as f_w:

    line = f.readline()

    while line:

    if groupin line:

    f_w.seek(f.tell(), 0)

    host = host +"\n"

    f_w.write(host)

    next_line = f.readline()

    while next_line:

    f_w.write(next_line)

    next_line = f.readline()

    f_w.truncate()

    break

    line = f.readline()

    i +=1

    except IOError:

    res['status'] =False

    res['message'] ='file wirte false!'

    return res

    2. 指定位置删除数据

    def del_host(file_name, host, group):

    res= {

    'status':True,

    'message':''

    }

    file_name ='./deploy/hosts' if not file_nameelse file_name

    try:

    i =1

    with open(file_name, 'r')as f:

    line = f.readline()

    # print f.tell()

    while line:

    if groupin line:

    _this = f.tell()

    break

    line = f.readline()

    i +=1

    else:

    _this =False

    i = i +1

    with open(file_name, 'r')as f_r:

    lines = f_r.readlines()

    f_r.seek(_this, 0)

    line = f_r.readline()

    while line:

    if "[" in line:

    _end = f_r.tell()

    break

    if i ==len(lines):

    print i, lines

    _end = f_r.tell()

    print 'last line', _end

    break

    line = f_r.readline()

    i +=1

    else:

    _end =False

    # print 'start, end', _this, _end

    if _this ==False:

    res['status'] =False

    res['message'] ='start  false!'

    elif _end ==False:

    res['status'] =False

    res['message'] ='end  false!'

    elif _this == _end:

    res['status'] =False

    res['message'] ='_this == _end!'

    else:

    print 'start, end', _this, _end

    try:

    with open(file_name, 'r')as f_r:

    with open(file_name, 'r+')as f_w:

    f_r.seek(_this, 0)

    line = f_r.readline()

    host_list = []

    while lineand f_r.tell() <= _end:

    host ="192.168.100.44" if not hostelse host

    print(line, f_r.tell())

    host_list.append(f_r.tell())

    if line.strip().replace('/n', '') == host:

    _host = f_r.tell()

    print f_r.tell()

    for iin host_list:

    if i == _host:

    now_location = host_list[host_list.index(i) -1]

    print 'now_location', now_location

    print 'host it..', line, i

    f_w.seek(now_location, 0)

    # f_r.readline()

    print 'i', i, line

    next_line = f_r.readline()

    print 'i--', i, next_line

    # next_line = line

    while next_line:

    # print 'next line', next_line

    f_w.write(next_line)

    next_line = f_r.readline()

    # break

    f_w.truncate()

    line = f_r.readline()

    except Exception as e:

    res['status'] =False

    res['msg'] = e

    except Exception as e:

    res['status'] =False

    res['msg'] = e

    return res

    展开全文
  • 笔者的应用场景:将图像指定区域的像素值按其空间位置写到 txt 文件...// 先txt文件中构造一个空矩阵,然后向该矩阵中指定行列写入个位数 int main10() { FILE *filp = fopen("cc.txt", "w+"); for (int i ...

     

    笔者的应用场景:将图像指定区域的像素值按其空间位置写到 txt 文件中。

    int hang = 4; // 矩阵行数
    int lie = 8; // 矩阵列数
    
    // 先在txt文件中构造一个空矩阵,然后向该矩阵中指定行列写入个位数
    int main10()
    {
        FILE *filp = fopen("cc.txt", "w+");
        for (int i = 0; i < hang; i++)
        {
            fseek(filp, lie, SEEK_END);
            fprintf(filp, "\n"); // 换行符占两个字节宽度
        }
    
        for (int i = 1; i <= hang; i++)
        {
            fseek(filp, (i - 1)*(lie + 2), SEEK_SET);
            for (int j = 1; j <= lie; j++)
            {
                fprintf(filp, "%d", i);
            }
        }
    
        fclose(filp);
        while (1);
        return 0;
    }
    
    // 对上面程序的扩展,在矩阵中指定行列写入最高只有3位数的数据,两数之间以空格符间隔开。
    int main11()
    {
        FILE *filp = fopen("cc.txt", "w+");
        for (int i = 0; i < hang; i++)
        {
            fseek(filp, 4 * lie, SEEK_END); // 每个数值
            fprintf(filp, "\n"); // 换行符占两个字节宽度
        }
    
        for (int i = 1; i <= hang; i++)
        {
            fseek(filp, (i - 1)*(4 * lie + 2) + 1, SEEK_SET); // +1 表示每个数的空格放在数字前面,否则空格会自动被放在数字后面的。
            for (int j = 1; j <= lie; j++)
            {
                if ((i + j) % 2)
                    fprintf(filp, "%3d", rand()%200);
                else // 模拟跳过某些特定位置
                    fseek(filp, 3, SEEK_CUR);
                if (j < lie) fseek(filp, 1, SEEK_CUR); // 跳过空格
            }
        }
    
        fclose(filp);
        while (1);
        return 0;
    }
    
    // 对上面程序的扩展,矩阵的第一行用于表示列标号,矩阵的第一列用于表示行标号
    int main()
    {
        FILE *filp = fopen("cc.txt", "w+");
        fprintf(filp, "     "); // 5个空格
        for (int j = 0; j < lie; j++)
        {
            fprintf(filp, " %3d", j);
        }
        fprintf(filp, "\n");
        for (int i = 0; i < hang; i++)
        {
            fprintf(filp, "%3d: ", i); // 3个数据宽度+1个冒号+1个空格,一共5个字符宽度,即和第0行的前5个空格对应。
            fseek(filp, 4 * lie, SEEK_CUR);
            fprintf(filp, "\n"); // 换行符占两个字节宽度
        }
        
        for (int i = 1; i <= hang; i++) // 第0行是列标号
        {
            fseek(filp, i*(4 * lie + 5 + 2) + 5, SEEK_SET); // 括号中的+5表示每行的长度,+2表示换行符,外面的+5表示跳过当前行的前5个字符。
            for (int j = 1; j <= lie; j++)
            {
                if ((i + j) % 2) fprintf(filp, " %3d", rand() % 200);
                else
                    fseek(filp, 4, SEEK_CUR);
            }
        }
    
        fclose(filp);
        while (1);
        return 0;
    }

     

    转载于:https://www.cnblogs.com/YahStudio/p/7201789.html

    展开全文
  • Python从文件中读取指定的行如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务:测试文件内容 :This is line 1.This is line 2.This is line 3.This is line 4.This is...

    Python从文件中读取指定的行

    如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务:

    测试文件内容 :This is line 1.

    This is line 2.

    This is line 3.

    This is line 4.

    This is line 5.

    This is line 6.

    This is line 7.

    This is line 8.

    测试代码:

    >>> import linecache

    >>> file_path = r"D:workpythontest.txt"

    >>> line_number = 5

    >>> def get_line_context(file_path, line_number):

    ... return linecache.getline(file_path, line_number).strip()

    ...

    >>> get_line_context(file_path, line_number)

    "This is line 5."

    >>>

    对于这个任务来说,标准的linecache模块是Python能够提供的最佳解决方案。

    利用python在文件中的指定位置写入

    import os

    file = open( "a.txt", "r" )

    file_add = open("a.txt","r")

    content = file.read()

    content_add = file_add.read()

    pos = content.find( "buildTypes")

    if pos != -1:

    content = content[:pos] + content_add + content[pos:] file = open( "a.txt", "w" )

    file.write( content )

    file.close()

    file_add.close()

    与find用法相同的还有rfind方法,不同的是rfind方法是从文件末尾开始搜索。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对软件开发网的支持。

    您可能感兴趣的文章:python config文件的读写操作示例Python读写文件模式和文件对象方法实例详解python读写csv文件并增加行列的实例代码python读取并写入mat文件的方法python读写csv文件实例代码python读写配置文件操作示例python文件读写代码实例

    展开全文
  • Python从文件中读取指定的行 如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务: 测试文件内容 : This is line 1. This is line 2. This is line 3. This is line 4...
  • Java RandomAccessFile 指定位置实现文件读取与写入RandomAccessFile是属于随机读取类,是可以对文件本身的内容直接随机进行操作的,可以在文件指定位置的读取和写入内容,这在很多时候都是很方便的。...

    Java RandomAccessFile 指定位置实现文件读取与写入

    RandomAccessFile是属于随机读取类,是可以对文件本身的内容直接随机进行操作的,可以在文件的指定位置的读取和写入内容,这在很多时候都是很方便的。

    RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。

    RandomAccessFile不属于InputStream和OutputStream类系的。实际上,除了实现DataInput和 DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系毫不相干,甚至不使用InputStream和OutputStream类中已经存在的任何功能;它是一个完全独立的类,所有方法(绝大多数都只属于它自己)都是从零开始写的。这可能是因为RandomAccessFile能在文件里面前后移动,所以它的行为与其它的I/O类有些根本性的不同。总而言之,它是一个直接继承Object的,独立的类。

    基本上,RandomAccessFile的工作方式是,把DataInputStream和DataOutputStream结合起来,再加上它自己的一些方法,比如定位用的getFilePointer( ),在文件里移动用的seek( ),以及判断文件大小的length( )、skipBytes()跳过多少字节数。此外,它的构造函数还要一个表示以只读方式("r"),还是以读写方式("rw")打开文件的参数 (和C的fopen( )一模一样)。它不支持只写文件。

    只有RandomAccessFile才有seek搜寻方法,而这个方法也只适用于文件。BufferedInputStream有一个mark( )方法,你可以用它来设定标记(把结果保存在一个内部变量里),然后再调用reset( )返回这个位置,但是它的功能太弱了,而且也不怎么实用。

    实例代码:

    import java.io.IOException;

    import java.io.RandomAccessFile;

    /**

    * RandomAccessFile是属于随机读取类,是可以对文件本身的内容直接随机进行操作的,就是说可以指定位置

    * 的读取和写入内容

    * @author andy

    *

    */

    public class RandomAccessFileTest {

    public static void main(String args[]) throws IOException {

    write();

    read();

    }

    public static void write() throws IOException {

    //以读写的方式来访问该文件

    RandomAccessFile raf = new RandomAccessFile("D:\\test.txt", "rw");

    raf.writeBytes("Hello World!");

    raf.writeBoolean(true);

    raf.writeInt(30);

    raf.writeDouble(3.56);

    raf.close();

    }

    public static void read() throws IOException {

    RandomAccessFile raf = new RandomAccessFile("D:\\test.txt", "r");

    raf.seek(12);//设置指针的位置

    boolean booleanValue = raf.readBoolean();

    int intValue = raf.readInt();

    double doubleValue = raf.readDouble();

    raf.seek(0);//设置指针的位置为文件的开始部分

    byte[] bytes = new byte[12];

    for (int i=0; i

    bytes[i] = raf.readByte();//每次读一个字节,并把它赋值给字节bytes[i]

    String stringValue = new String(bytes);

    raf.skipBytes(1);//指针跳过一个字节

    int intValue2 = raf.readInt();

    raf.close();

    System.out.println(booleanValue);

    System.out.println(intValue);

    System.out.println(doubleValue);

    System.out.println(stringValue);

    System.out.println(intValue2);

    }

    }

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    展开全文
  • Python从文件中读取指定的行如果想根据给出的行号, 从文本文件中读取一行数据, Python标准库linecache模块非常适合这个任务:测试文件内容 :This is line 1.This is line 2.This is line 3.This is line 4.This is...
  • 现在需要往xml指定位置等级插入相似的数据。 xml某个等级位置的数据如下所示, ![图片说明](https://img-ask.csdn.net/upload/201805/28/1527494758_749923.png) C#界面留几个用户可以写入关键字的textbox控件...
  • 写好的文件在指定位置插入数据 这里是写好的PCM格式音频,回到文件开头写入WAV文件头 RandomAccessFile raf = new RandomAccessFile(FileName, "rw"); raf.seek(pos); raf.write(buffer,0,num); 参考...
  • Java RandomAccessFile 指定位置实现文件读取与写入RandomAccessFile是属于随机读取类,是可以对文件本身的内容直接随机进行操作的,可以在文件指定位置的读取和写入内容,这在很多时候都是很方便的。...
  • 使用poi修改Excel指定位置数据

    千次阅读 2019-02-19 14:05:05
    * 给excel指定位置写入值 * * @param path 写入文件在路径 * @param coordinate 写入内容的位置(例如:B4) * @param value 写的值 */ public static void writeSpecifiedCell(String path,...
  • 直接贴代码吧。不过这里要做一个简单的说明,对于这个程序,我们必须保证我们F...你可以对这个异常进行人性的处理,还可以程序要向这个路径写入数据之前,创建出这个路径。import java.io.File;import java.io.F...
  • 把json格式数据写入到本地文件

    万次阅读 2017-06-14 15:52:43
    使用File在指定位置创建出文件,如:e : / test1.json 2.获取数据的byte[] 3.使用输出流写入 第一步:创建文件 File file = new File("要创建的目录+文件详细名"); if(!file.exists()){ file....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 421
精华内容 168
关键字:

在文件指定位置写入数据