本文實例講述了python檔案讀寫操作與linux shell變數指令互動執行的方法。分享給大家供大家參考。具體如下:
檔案操作的相關係統呼叫
建立
#int creat(const char *filename, mode_t mode);
參數mode 指定新建檔案的存取權限,它與umask 一起決定檔案的最終權限(mode&umask),其中umask 代表了檔案在建立時需要去掉的一些存取權限,它只會影響讀取、寫入和執行權限,呼叫函數為int umask (int newmask)。
開啟
int open(const char *pathname, int flags);
pathname是我們要開啟的檔案名稱(包含路徑名稱,預設在當前路徑下)
flags開啟的標誌
O_RDONLY 以唯讀的方式開啟檔案
O_WRONLY 以只寫的方式開啟檔案
O_RDWR 以讀寫的方式開啟檔案
#O_APPEND 以追加的方式開啟檔案
O_CREAT 建立一個檔案
#O_EXEC 如果使用了O_CREAT而且檔案已經存在,就會發生一個錯誤
#O_NOBLOCK 以非阻塞的方式開啟一個檔案
O_TRUNC 如果檔案已經存在,則刪除檔案的內容
int open(const char *pathname,int flag,mode_t mode)
當flag為O_CREATE,指定mode標誌,用來表示檔案的存取權限
S_IRUSR 使用者可以讀取
S_IWUSR 使用者可以寫
S_IXUSR 使用者可以執行
#S_IRWXU 使用者可以讀取、寫入、執行
S_IRGRP 群組可以讀取
上述語句等價於:
open("test", O_CREAT , S_IRWXU | S_IROTH | S_IXOTH | S_ISUID );
int write (int fd, const void *buf, size_t length);
int lseek(int fd, offset_t offset, int whence);
SEEK_SET:相對檔案開頭。
SEEK_CUR:相對檔案讀寫指標的目前位置。
SEEK_END:相對文件末尾。
fopen()實作開啟指定檔案filename,其中的mode為開啟模式,Linux系統不區分二進位和文字檔。
#
a、ab 以追加方式開啟。如果檔案不存在,則建立該檔案
#r 、r b、rb 以讀寫方式開啟
w 、w b、wh 以讀寫方式開啟。如果文件不存在,則建立新文件,否則文件被截斷
#a 、a b、ab 以讀取和追加方式打開。如果檔案不存在,則建立新檔案
讀取寫入
int fgetc(FILE *stream);
int fputc(int c, FILE *stream);
char *fgets(char *s, int n, FILE *stream);
int fputs(const char *s, FILE *stream);
int fprintf(FILE * stream, const char *format, ...);
int fscanf (FILE *stream, const char *format, ...);
size_t fread(void *ptr, size_t size, size_t n, FILE * stream);
size_t fwrite (const void *ptr, size_t size, size_t n, FILE *stream);
int fsetpos(FILE *stream, fpos_t *pos);
nt fsetpos(FILE *stream, const fpos_t *pos);
int fseek(FILE *stream, long offset, int whence);
fread()實作從stream中讀取n 個字段,每個字段為size個字節,並將讀取的字段放入ptr 所指的字元數組中,傳回實際已讀取的字段數。
write()實作從緩衝區ptr 所指的陣列中把n 個欄位寫到stream 中,每個字段長為size個字節,傳回實際寫入的字段數。
關機
int fclose (FILE *stream);
#
Linux檔案系統目錄結構
#/bin----存放著最常用的基本指令,如ls 、cp、mkdir 等,這個目錄中的檔案都是可執行的。
/boot----啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件,如vmlinuz、initrd.img
#/dev----裝置檔案儲存目錄,應用程式透過對這些文件的讀寫和控制就可以存取實際的設備。
/etc----系統管理所需的設定檔和子目錄,如使用者帳號及密碼設定文件。
/home----一般使用者的家目錄,每個使用者都有一個自己的目錄,一般該目錄名是以使用者的帳號命名的。
/lib----庫檔案存放目錄,系統最基本的動態連線共用程式庫,類似Windows裡的DLL檔。
/lost found----一般情況下是空的,當系統意外崩潰或機器意外關機時會產生一些文件碎片放在這裡。
/mnt----方便使用者暫時掛載別的檔案系統的,如將光驅掛載在/mnt/上,進入該目錄就可以查看光碟機裡的內容
media----自動辨識一些設備掛載到這個目錄下,例如USB、光碟機等等。
/opt----給主機額外安裝軟體所存放的目錄
/proc----作業系統執行時,進程及核心資訊(如CPU、硬碟分割區、記憶體資訊等)就存放在這裡。它是系統記憶體的映射,存在在內存,透過直接存取這個目錄來獲取系統資訊。
/root----超級權限使用者的家目錄
/sbin----超級權限使用者的可執行指令存放目錄,一般使用者無權限執行這個目錄下的指令
#/tmp-----存放暫存檔案。
/usr-----系統應用程式與檔案(如指令、說明檔)存放程式的目錄,類似windows下的program files目錄。
/var-----經常被修改的目錄放在這個目錄下,如日誌檔案
/sys----核心裝置樹的一個直覺反映。當一個核心物件被創建的時候,對應的檔案和目錄也在核心物件子系統中被建立。
/initrd---若在啟動過程中使用了initrd 映像作為暫存根檔案系統,則在執行完其上的/linuxrc掛接真正的根檔案系統後,原來的初始RAM檔案系統被對應到/initrd目錄。
Linux檔案系統與裝置驅動程式
相關建議:
python檔案讀寫作業與linux shell變數指令互動執行的方法
以上是Linux檔案操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!