pythonos新建文件
⑴ 菜鳥學慣用python創造一個可以為我的所有重要文件創建備份的程序!!高手來指點一下好么
你大概是看《簡明教程》的吧!
因為太像了 呵呵~~~~~~~~
你是XP系統,第一句就錯了大哥,應該是這樣的
#!C:\python25
#! filename:文件名
然後我建議你去看看Win RAR 的說明文檔 是在命令行下的哦!
你不能夠看到書里的就搬嘛,linux是用tar命令
windows 一般都是用Win RAR
你先去熟悉下吧!!
在windows上根本沒有ZIP命令,我是說不安裝軟體的話,所以你要去安裝一個ZIP的軟體,另外還要設置環境變數,這個會吧。
學設計程序的人不會連環境變數都不會吧!!!
大哥
⑵ python os.makedirs創建多層文件夾
你可以調控制台刪啊。
⑶ 如何在python腳本中新建一個守護子進程
函數實現
[html] view plain
#!/usr/bin/env python
#coding: utf-8
import sys, os
'''將當前進程fork為一個守護進程
注意:如果你的守護進程是由inetd啟動的,不要這樣做!inetd完成了
所有需要做的事情,包括重定向標准文件描述符,需要做的事情只有chdir()和umask()了
'''
def daemonize (stdin='/dev/null', stdout='/dev/null', stderr='/dev/null'):
#重定向標准文件描述符(默認情況下定向到/dev/null)
try:
pid = os.fork()
#父進程(會話組頭領進程)退出,這意味著一個非會話組頭領進程永遠不能重新獲得控制終端。
if pid > 0:
sys.exit(0) #父進程退出
except OSError, e:
sys.stderr.write ("fork #1 failed: (%d) %s\n" % (e.errno, e.strerror) )
sys.exit(1)
#從母體環境脫離
os.chdir("/") #chdir確認進程不保持任何目錄於使用狀態,否則不能umount一個文件系統。也可以改變到對於守護程序運行重要的文件所在目錄
os.umask(0) #調用umask(0)以便擁有對於寫的任何東西的完全控制,因為有時不知道繼承了什麼樣的umask。
os.setsid() #setsid調用成功後,進程成為新的會話組長和新的進程組長,並與原來的登錄會話和進程組脫離。
#執行第二次fork
try:
pid = os.fork()
if pid > 0:
sys.exit(0) #第二個父進程退出
except OSError, e:
sys.stderr.write ("fork #2 failed: (%d) %s\n" % (e.errno, e.strerror) )
sys.exit(1)
#進程已經是守護進程了,重定向標准文件描述符
for f in sys.stdout, sys.stderr: f.flush()
si = open(stdin, 'r')
so = open(stdout, 'a+')
se = open(stderr, 'a+', 0)
os.p2(si.fileno(), sys.stdin.fileno()) #p2函數原子化關閉和復制文件描述符
os.p2(so.fileno(), sys.stdout.fileno())
os.p2(se.fileno(), sys.stderr.fileno())
#示例函數:每秒列印一個數字和時間戳
def main():
import time
sys.stdout.write('Daemon started with pid %d\n' % os.getpid())
sys.stdout.write('Daemon stdout output\n')
sys.stderr.write('Daemon stderr output\n')
c = 0
while True:
sys.stdout.write('%d: %s\n' %(c, time.ctime()))
sys.stdout.flush()
c = c+1
time.sleep(1)
if __name__ == "__main__":
daemonize('/dev/null','/tmp/daemon_stdout.log','/tmp/daemon_error.log')
main()
可以通過命令ps -ef | grep daemon.py查看後台運行的繼承,在/tmp/daemon_error.log會記錄錯誤運行日誌,在/tmp/daemon_stdout.log會記錄標准輸出日誌。
⑷ python中os.path.mkdir與os.path.split怎麼連用
解決方法如下:
os.mkdir(filePath)的作用是創建一個路徑文件夾(如果存在的話會報錯),該路徑由參數filePath指定,沒有os.path.mkdir;
os.path.split(fileName)的作用是分割fileName獲得路徑和文件名,返回值是一個列表;
正確使用形式如下:
importos
fileName=r"C:UsersYYCDesktopSS est.txt"
os.mkdir(os.path.split(fileName)[0])該段代碼的作用是在C:UsersYYCDesktop路徑下生成SS文件夾。
⑸ python os模塊怎麼創建文件
創建文件:
1) os.mknod("test.txt") 創建空文件
2) open("test.txt",w)直接打開一個文件,如果文件不存在則創建文件
創建目錄:
os.mkdir("file")
⑹ 如何用python在Windows系統下,生成UNIX格式文件
平時測試工作中,少不了製造測試數據。最近一個項目,我就需要製造一批可在UNIX下正確讀取的文件。為確保這批文件能從FTP下載成功,開發叮囑我:「文件中凡是遇到換行,換行符必須是UNIX下的LF,而不是Dos\Windows下的CRLF。」
換行,在普通文檔編輯中,就是按下「Enter」鍵。在編寫代碼時,就是在文件中寫入字元串」\n」。但用python命令w在文件寫入換行」\n」以後,由於是Windows系統的原故,會默認把」\n」實際保存為」\r\n」。
對於Windows下為何是」\r\n」,這里引用網上的解釋:因為Windows採用了傳統的英文打字機模式,它在換行時需分解成兩步——回車」\r」和換行」\n」。回車(carriage return,CR)是將小車退回至起點,相當於把游標從行尾切換到行首,換行(line feed,LF)是將小車切換到下一行,這樣的組合操作就完成了另起一行的目的。
我們首先確認Windows下的換行是否真的是CRLF:把文件用任意一款文本編輯器(以Notepad++為例)打開,在編輯器的菜單欄中,找到「視圖」菜單,點擊「顯示符號」,勾選「顯示所有字元」,就可以顯示換行符了。我們在下圖中可以看到,在Windows系統下,文件中的換行符確實是CRLF。
如何把CRLF變成LF呢?開發給出了一個解決方案。
Method A:
在Notepad++界面右下角,雙擊當前文件格式的描述:「Dos\Windows」,點擊彈框中的「轉換為UNIX格式」,最後保存文件。此時可以看到文件每行結尾都已經展示為「LF」了。
雖然整個轉換過程極為簡單,但要是有一大批這樣的文件需要一個個手動轉換,我不禁感慨光(xīn)陰(hǎo)虛(lèi)度,韶(bù)光(xiǎng)易(dòng)逝。
在表達抗議後,開發表示可以優化此方法,即使用文本編輯器的替換功能:
Method B:
使用Notepad++打開原文件,按下組合鍵Ctrl+F後,在彈框中選擇「替換」欄,在「查找目標」輸入框填寫「\r\n」,「替換為」輸入框填寫「\n」,「查找模式」選擇「擴展(\n\r\t\0\x...)」,點擊「替換所有打開文件」後,一一保存文件即可。
然而把所有的文件保存一遍,並不能提升測試的幸福感。我追求的是盡量減少重復而繁重的手工勞動,解放雙手,高效測試!類似這樣的能力瓶頸,從我進入測試行業開始,就不斷擠占著我的業余時間。為了更好的提高自己,系統地學習測試開發所必需的技能,我報名參加了吳老的測試開發培訓班。
截至目前,吳老已經授課兩個多月,我從無到有,學習了很多基本的python開發知識,也偶爾能接觸到一些巧妙的編程思維。正好這次的數據准備,給我提供了一個實踐的契機,讓我運用最近學習的文件操作知識,體驗了一次局部自動化的樂趣。
下面給大家分享一下我這次愉快的實踐內容,由於真實的測試數據略有復雜,這里就用簡單的兩行數字來舉個栗子。
首先按上課所講的內容,依葫蘆畫瓢,使用Notepad++創建文件並寫入文本內容:
1 #coding:utf-8(設定文件編碼格式)
2 import os
3 import time
4
5 #切換到創建文件目錄
6 os.chdir(r"C:\Study\Chestnuts\01data")
7
8 #新建創建文件函數
9 def create_file():
10
11 #構造文件名:以「年月日」為文件名的.dat文件
12 t=time.localtime()
13 file_name=time.strftime("%Y-%m-%d",t)+".dat"
14 #創建並打開文件
15 fp=open(file_name,'w+')
16 #寫入文件內容
17 fp.writelines("12345\n")
18 fp.writelines("67890\n")
19 #關閉文件
20 fp.close()
21
22 #調用函數
23 create_file()
如上圖所示,執行腳本就會生成一份原始文件,不過在兩行內容的末尾,換行符均顯示為CRLF,接下來就是轉換的工作了。
Method C:對原文件進行格式轉換
如果是對現有的文件進行處理,可以使用Notepad++再編寫一個轉換的腳本。參考網上的方法,使用rU方式讀取文件內容,使用wb方式寫入文件內容,如下圖所示:
1 #coding:utf-8
2 import os
3
4 #文件路徑准備
5 route=r"C:\Study\Chestnuts\01data"
6
7 #遍歷路徑下目錄,文件夾,文件
8 for root,dirs,files in os.walk(route):
9 #遍歷文件
10 for name in files:
11 #歸納文件名特徵
12 if name[-3:]=='dat':
13 #拼接文件名(目錄+文件名稱)
14 catalog=os.path.join(root,name)
15 #把所有行分割符替換為換行符\n返回.
16 fp=open(catalog,"rU+")
17 #讀取文件並保存
18 strings=fp.read()
19 fp.close()
20 #使用二進制寫文件
21 fp1=open(catalog,"wb")
22 fp1.seek(0)
23 fp1.write(strings)
24 fp1.flush()
25 fp1.close()
執行這個腳本,就能對現有文件格式進行轉換,得到換行符是LF的文件了。
結果是對了,但執行兩個腳本來生成一份最終文件,難免讓我覺得還不夠簡單。我分析了以上文件轉換的代碼,發現關鍵步驟是使用二進制(wb)方式寫入文件。
Method D:原文件使用二進制方式寫入
既然這樣,不如在一開始就使用二進制寫文件,一步到位!並且只需把源代碼中寫入方式(w)變成二進制寫入(wb)方式即可。你看,僅僅添加了一個字母,就省去了十幾行代碼,還達到了預期目標,可謂一舉多得!
#coding:utf-8(設定文件編碼格式)
import os
import time
#切換到創建文件目錄
os.chdir(r"C:\Study\Chestnuts\01data")
#新建創建文件函數
def create_file():
#構造文件名:以「年月日」為文件名的.dat文件
t=time.localtime()
file_name=time.strftime("%Y-%m-%d",t)+".dat"
#創建並打開文件
fp=open(file_name,'wb+')
#寫入文件內容
fp.writelines("12345\n")
fp.writelines("67890\n")
#關閉文件
fp.close()
#調用函數
create_file()
⑺ python編程中 os.mkfifo()和os.mknod()函數具體用法最好有例子,裡面參數具體怎麼配置就能創建管道或節
mkfifo函數使用
[code]mkfifo(建立實名管道)
相關函數
pipe,popen,open,umask
表頭文件
#include
#include
定義函數
int mkfifo(const char * pathname,mode_t mode);
函數說明
mkfifo() 會依參數pathname建立特殊的FIFO文件,該文件必須不存在,而參數mode為該文件的許可權(mode%~umask),因此 umask值也會影響到FIFO文件的許可權。Mkfifo()建立的FIFO文件其他進程都可以用讀寫一般文件的方式存取。當使用open()來打開 FIFO文件時,O_NONBLOCK旗標會有影響
1、當使用O_NONBLOCK 旗標時,打開FIFO 文件來讀取的操作會立刻返回,但是若還沒有其他進程打開FIFO 文件來讀取,則寫入的操作會返回ENXIO 錯誤代碼。
2、沒有使用O_NONBLOCK 旗標時,打開FIFO 來讀取的操作會等到其他進程打開FIFO文件來寫入才正常返回。同樣地,打開FIFO文件來寫入的操作會等到其他進程打開FIFO 文件來讀取後才正常返回。
返回值
若成功則返回0,否則返回-1,錯誤原因存於errno中。
錯誤代碼
EACCESS 參數pathname所指定的目錄路徑無可執行的許可權
EEXIST 參數pathname所指定的文件已存在。
ENAMETOOLONG 參數pathname的路徑名稱太長。
ENOENT 參數pathname包含的目錄不存在
ENOSPC 文件系統的剩餘空間不足
ENOTDIR 參數pathname路徑中的目錄存在但卻非真正的目錄。
EROFS 參數pathname指定的文件存在於只讀文件系統內。
示例1:
#include
#include
#include
#include
int main(void)
{
char buf[80];
int fd;
unlink( "zieckey_fifo" );
mkfifo( "zieckey_fifo", 0777 );
if ( fork() > 0 )
{
char s[] = "Hello!\n";
fd = open( "zieckey_fifo", O_WRONLY );
write( fd, s, sizeof(s) );
//close( fd );
}
else
{
fd = open( "zieckey_fifo", O_RDONLY );
read( fd, buf, sizeof(buf) );
printf("The message from the pipe is:%s\n", buf );
//close( fd );
}
return 0;
}
執行
hello!
示例2:
#include
#include
#include
#include
#include
int main( int argc, char **argv )
{
mode_t mode = 0666;
if ( argc !=2 )
{
printf( "Usage:[%s] fifo_filename\n", argv[0] );
return -1;
}
if (mkfifo( argv[1], mode)<0 )
{
perror( "mkfifo");
return -1;
}
return 0;
} [/code]
⑻ python os模塊怎麼使用
常用方法:
1. os.name——判斷現在正在實用的平台,Windows 返回 『nt'; Linux 返回』posix'。
2. os.getcwd()——得到當前工作的目錄。
3. os.listdir()——指定所有目錄下所有的文件和目錄名。
例:
⑼ python os.chdir中文目錄錯誤
經過我的本地測試,是沒有問題的。
相信看我的輸出你就知道程序是沒有問題的,是可以輸出中文目錄的,你可以嘗試卸載重新安裝下python試試。另外我的python版本是2.7。
⑽ linux下python怎麼在其他文件夾創建文件求指點啊,弄了很久不明白
假你想寫一個文件filename='/root/wujin/5.2/03.html'
但是文件夾可能不存在。
先這樣子
targetpath = os.path.dirname(filename)
if not os.path.isdir(targetpath):
os.makedirs(targetpath)
然後你就可以打到filename,寫入內容了。