カリキュラムノート--006(IO操作、モジュール)20200320
50349 ワード
IOプログラミング及びモジュール一、IOプログラミング ファイル読み書き ファイルを開く ファイルを読む 書き込みファイル with文 注: 二、モジュール モジュールの分類 システムモジュール(Python公式提供、内蔵モジュール) サードパーティモジュール カスタムモジュール モジュールの導入 ビューモジュール 内蔵モジュール osモジュール sysモジュール time&datetimeモジュール randomモジュール mathモジュール モジュールの定義 一、IOプログラミング
IOはコンピュータにおいてInput/Output、すなわち入出力を指す.プログラムとランタイムデータはメモリに存在するため、CPUという超高速なコンピューティングコアが実行し、データ交換に関わる場所は、通常ディスク、ネットワークなどであり、IOインタフェースが必要である.例えば、ブラウザを開いて、新浪のトップページにアクセスするには、ブラウザというプログラムはネットワークIOを通じて新浪のホームページを取得する必要があります.ブラウザはまず新浪サーバーにデータを送信して、私がトップページのHTMLがほしいことを教えて、この動作は外にデータを送って、Outputと言って、それから新浪サーバーはホームページを送って、この動作は外からデータを受信して、Inputと言います.したがって、通常、プログラムがIO操作を完了すると、InputとOutputの2つのデータストリームがある.もちろん1つしか使わない場合もあります.例えば、ディスクからファイルをメモリに読み込むと、Input操作しかありません.逆に、ディスクファイルにデータを書き込むと、Output操作にすぎません.
ファイルの読み書き
ファイルの読み書きは最も一般的なIO操作です.Pythonにはファイルを読み書きする関数が内蔵されており、使い方はCと互換性があります.
ファイルを読み書きする前に、ディスク上でファイルを読み書きする機能はオペレーティングシステムによって提供されていることを理解しなければなりません.現代のオペレーティングシステムでは、一般的なプログラムがディスクを直接操作することは許されません.そのため、ファイルを読み書きすることは、オペレーティングシステムにファイルオブジェクト(通常はファイル記述子と呼ばれます)を開くように要求し、その後、オペレーティングシステムが提供するインタフェースを介して、このファイルオブジェクトからデータ(ファイルを読む)を読み取るか、このファイルオブジェクト(ファイルを書く)にデータを書き込む.
ファイル操作に欠かせないのはopen関数です.ファイルを読み書きする前に、ファイルを開き、ファイルハンドルを取得する必要があります.
注意:open()file()はできるだけopen()を使用し、Python 3以降はfile()はサポートされません
ファイルを開く
ファイルを読むモードでファイルオブジェクトを開くには、Pythonに組み込まれたopen()関数を使用して、ファイル名とラベルを入力します.
この文は、返されるFile_を表します.objectは、ファイルへのポインタ(ファイルオブジェクト)ファイルハンドルです.例:
ファイルを読む
ファイルを開くことに成功した場合、read()メソッドを呼び出すと、ファイルのすべての内容を一度に読み取ることができ、Pythonは内容をメモリに読み込み、strオブジェクトで表します.
ファイルを書く
testファイルの内容は次のとおりです.
with文
しかし、毎回このように写実的で煩雑なので、Pythonはwith文を導入してclose()メソッドを自動的に呼び出すことができます.
これは前のtry...finallyと同じですが、コードはより簡潔で、f.close()メソッドを呼び出す必要はありません.
注意:
read()を呼び出すと、ファイルのすべての内容が一度に読み出され、ファイルが10 Gあるとメモリが爆発するので、念のためです.はread(size)メソッドを繰り返し呼び出し、sizeバイトのコンテンツを毎回最大で読み出すことができる. 呼び出しreadline()は、1行のコンテンツを1回に読み出すことができ、 . readlines()を呼び出して、すべてのコンテンツを一度に読み取り、行別にlistを返します.したがって、必要に応じて呼び出す方法を決定します. ファイルが小さい場合、read()は一度に読み取るのが最も便利です.ファイルサイズが特定できない場合は、read(size)を繰り返し呼び出して比較するのが安全です. プロファイルの場合、readline()を呼び出すのが最も便利です:
また、OSライブラリから一括してファイルを読み取ることができます.詳細は記事を参照してください.
二、モジュール
モジュールの分類
システムモジュール(Python公式提供、内蔵モジュール)
サードパーティモジュール
カスタムモジュール
モジュールのインポート
import package import package as alias#別名import packageを使用する.module from package import module
モジュールの表示
Python自体には非常に有用なモジュールがたくさん内蔵されており、インストールが完了すればすぐに使用できます.pythonを使用する時間が長くなるにつれて、インストールされているpythonモジュールも多くなり、インストールされているpythonモジュールを表示したい場合は、次のようにします.
一、コマンドライン下pydocコマンドを使用してコマンドライン下で
二、pythonインタラクション解釈器でhelp()を使用して、インタラクション解釈器に
内蔵モジュール
一:osモジュール、(ファイルとディレクトリ)システムレベルを提供するための操作二:sysモジュール:解釈器に関する操作三:hashlibモジュール:md 5モジュールとshaモジュールの代わりに暗号化に関する操作を提供する.主にSHA 1,SHA 224,SHA 256,SHA 384,SHA 512,MD 5アルゴリズム四:shutilモジュール:高度なファイル、フォルダ、圧縮パケット処理モジュール(再帰、ファイルコピーなど)5:configparserモジュール:特定の構成を操作するため、6:logging:ログの記録を容易にし、スレッドを安全にするためのモジュール7:time&datetimeモジュール:時間関連の操作、時間は3つの表現があります:8:randomモジュール:ランダム数9:jsonとpickleモジュール10:shelveモジュール:簡単なk、vメモリデータをファイルを通じて持続化するモジュールで、pickleがサポートできるpythonデータフォーマットを持続化することができます
osモジュール
osモジュールはオペレーティングシステムとインタラクティブなインタフェースであり、os(operator system)オペレーティングシステムは主にオペレーティングシステムのファイルシステムを操作するために使用され、一般的な方法:
os.pathモジュールは、osのサブモジュールが主にファイルを操作するために使用され、ファイルが存在するかどうか、ファイルかフォルダかなどを判断する.
Sysモジュール
Sysモジュールは、Pythonの実行時の構成およびリソースを処理するための多くの関数メソッドおよび変数を含む非常に実用的なサービスのセットを含み、従来のプログラム以外のシステム環境と対話することができる.
time&datetimeモジュール
3つの時間表示:Pythonでは、通常、時間を表す方法がいくつかあります.
randomモジュール
randomモジュール:
mathモジュール
このモジュールには多くのプログラミング言語が存在し,一般的にこのモジュールは数学演算を操作するために用いられる.
モジュールの定義
例えばabc.pyのファイルはabcという名前のモジュールで、xyzです.pyのファイルはxyzという名前のモジュールです.次に、abcとxyzの2つのモジュール名が他のモジュールと競合していると仮定し、パッケージを通じてモジュールを組織し、競合を回避することができます.mycompanyなどの最上位パッケージ名を選択し、次のディレクトリに保存します.
パッケージを導入した後、最上位レベルのパッケージ名が他の人と衝突しない限り、すべてのモジュールは他の人と衝突しません.今、abc.pyモジュールの名前はmycompanyになりました.abc、似たようなxyz.pyのモジュール名がmycompanyになりました.xyz .
各パッケージディレクトリの下に__が1つあることに注意してください.init__.pyのファイル、このファイルは存在しなければなりません.そうしないと、Pythonはこのディレクトリをパッケージではなく普通のディレクトリと見なします.init.pyは空のファイルでもPythonコードでもいいです.init__.py自体がモジュールであり、そのモジュール名はmycompanyである.同様に、マルチレベルディレクトリがあり、マルチレベル階層のパケット構造を構成することができます.たとえば、次のディレクトリ構造があります.
ファイルwww.pyのモジュール名はmycompany.web.2つのファイルpyのモジュール名はそれぞれmycompany.それはあなたとweb.utils .
自分でモジュールを作成するときは名前に注意し、Pythonが持っているモジュール名と競合してはいけません.例えば、システムにsysモジュールが付属すると、自分のモジュールはsysと命名できない.py、そうでないとシステムに付属するsysモジュールをインポートできません.
IOはコンピュータにおいてInput/Output、すなわち入出力を指す.プログラムとランタイムデータはメモリに存在するため、CPUという超高速なコンピューティングコアが実行し、データ交換に関わる場所は、通常ディスク、ネットワークなどであり、IOインタフェースが必要である.例えば、ブラウザを開いて、新浪のトップページにアクセスするには、ブラウザというプログラムはネットワークIOを通じて新浪のホームページを取得する必要があります.ブラウザはまず新浪サーバーにデータを送信して、私がトップページのHTMLがほしいことを教えて、この動作は外にデータを送って、Outputと言って、それから新浪サーバーはホームページを送って、この動作は外からデータを受信して、Inputと言います.したがって、通常、プログラムがIO操作を完了すると、InputとOutputの2つのデータストリームがある.もちろん1つしか使わない場合もあります.例えば、ディスクからファイルをメモリに読み込むと、Input操作しかありません.逆に、ディスクファイルにデータを書き込むと、Output操作にすぎません.
ファイルの読み書き
ファイルの読み書きは最も一般的なIO操作です.Pythonにはファイルを読み書きする関数が内蔵されており、使い方はCと互換性があります.
ファイルを読み書きする前に、ディスク上でファイルを読み書きする機能はオペレーティングシステムによって提供されていることを理解しなければなりません.現代のオペレーティングシステムでは、一般的なプログラムがディスクを直接操作することは許されません.そのため、ファイルを読み書きすることは、オペレーティングシステムにファイルオブジェクト(通常はファイル記述子と呼ばれます)を開くように要求し、その後、オペレーティングシステムが提供するインタフェースを介して、このファイルオブジェクトからデータ(ファイルを読む)を読み取るか、このファイルオブジェクト(ファイルを書く)にデータを書き込む.
ファイル操作に欠かせないのはopen関数です.ファイルを読み書きする前に、ファイルを開き、ファイルハンドルを取得する必要があります.
注意:open()file()はできるだけopen()を使用し、Python 3以降はfile()はサポートされません
ファイルを開く
ファイルを読むモードでファイルオブジェクトを開くには、Pythonに組み込まれたopen()関数を使用して、ファイル名とラベルを入力します.
open(file_name[,access_mode][,buffering][,encoding=None][,errors=None][,newline=None][,closefd=True][,opener=None])
file_name: 。
access_mode: : , (r)
r 。 。 。
w ,
a ( EOF , )
r+
w+ ( w )
a+ ( a )
rb
wb ( w )
ab ( a )
rb+ ( r+ )
wb+ ( w+ )
ab+ ( a+ )
fp=open('D:\\TEACH\\Graduate\\PYTHON\\SUESPRG\\test.txt', 'r')
この文は、返されるFile_を表します.objectは、ファイルへのポインタ(ファイルオブジェクト)ファイルハンドルです.例:
fp=open('D:\\TEACH\\Graduate\\PYTHON\\SUESPRG\\test.txt', 'r')
open
(1)fp.closed
。 true , false
(2)fp.mode
。 。
(3)fp.name:
。
(4) fp.softspace
print , ,false ,true 。
(5)fp.close()
, , 。
(6)flush()
, flush() 。
(7)next()
file for...in file , next() 。
ファイルを読む
ファイルを開くことに成功した場合、read()メソッドを呼び出すと、ファイルのすべての内容を一度に読み取ることができ、Pythonは内容をメモリに読み込み、strオブジェクトで表します.
s=f.read()
ファイルを書く
f.write(s)
testファイルの内容は次のとおりです.
Hello,Word!
123
2343
fr = open('D:\\test.txt', 'r')
fw = open('D:\\testw.txt', 'w')
s=fr.read() #'Hello, world!'
print(s)
fw.write(s)
fr.close()
fw.close()
fw = open('D:\\testw.txt', 'a')
x,y=3,-4
z=[1,4,7,-9]
s='
'+str(x)+'
'+str(y)++'
'+str(z)
fw.write(s)
fw.close()
with文
しかし、毎回このように写実的で煩雑なので、Pythonはwith文を導入してclose()メソッドを自動的に呼び出すことができます.
with open('D:\\test.txt', 'r') as f:
print(f.read())
これは前のtry...finallyと同じですが、コードはより簡潔で、f.close()メソッドを呼び出す必要はありません.
注意:
read()を呼び出すと、ファイルのすべての内容が一度に読み出され、ファイルが10 Gあるとメモリが爆発するので、念のためです.
# txt
def openfile(fileename):
data=[]
with open(fileename, 'r',encoding='utf-8') as f:
alllines=f.readlines()
for line in alllines:
line.strip()
temp=line.split('\t')
tempL=[]
for j in range(len(temp)):
if j==0:
tempL.append(int(temp[j]))
else:
tempL.append(float(temp[j]))
data.append(tempL)
return data
if __name__=='__main__':
dirr='D:\\TEACH\\Graduate\\PYTHON\\SUESPRG\\'
filee='Sample1.txt'
fileename=dirr+filee
data=openfile(fileename)
print(data[0:3])
if __name__=='__main__':
dirr='D:\\TEACH\\Graduate\\PYTHON\\SUESPRG\\'
filee='Sample3.data'
fileename=dirr+filee
OrigCatL,OrigNumL=openfile(fileename)
print(OrigCatL[0:5])
print(OrigNumL[0:5])
# data
def openfile(fileename):
with open(fileename,mode = "r",encoding='utf-8') as fr:
arrayOLines = fr.readlines()
OrigCatL = []
OrigNumL=[]
for line in arrayOLines:
line=line[:-1]
listFromLine = line.split(",")
if listFromLine[0] in ['F','I']:#abalone.data
OrigCatL.append(-1)
else:
OrigCatL.append(1)
temp=[]
for j in range(1,len(listFromLine)):
temp.append(float(listFromLine[j]))
OrigNumL.append(temp)
return OrigCatL,OrigNumL
if __name__=='__main__':
dirr='D:\\TEACH\\Graduate\\PYTHON\\SUESPRG\\'
filee='Sample3.data'
fileename=dirr+filee
OrigCatL,OrigNumL=openfile(fileename)
print(OrigCatL[0:5])
print(OrigNumL[0:5])
また、OSライブラリから一括してファイルを読み取ることができます.詳細は記事を参照してください.
二、モジュール
モジュールの分類
システムモジュール(Python公式提供、内蔵モジュール)
: ,builtins
|-- random
|-- math
|-- os
|-- os.path
|-- sys
|-- time
|-- datetime
|-- hashlib
|-- base64
サードパーティモジュール
|-- ,
:
requests # pip install requests
カスタムモジュール
xxx.py py
project->package->
モジュールのインポート
import package import package as alias#別名import packageを使用する.module from package import module
モジュールの表示
Python自体には非常に有用なモジュールがたくさん内蔵されており、インストールが完了すればすぐに使用できます.pythonを使用する時間が長くなるにつれて、インストールされているpythonモジュールも多くなり、インストールされているpythonモジュールを表示したい場合は、次のようにします.
一、コマンドライン下pydocコマンドを使用してコマンドライン下で
$ pydoc modules
を実行して表示する二、pythonインタラクション解釈器でhelp()を使用して、インタラクション解釈器に
help("modules")
と入力すればよい.効果はコマンドラインに$ pydoc modules
と入力するのと同じである.内蔵モジュール
一:osモジュール、(ファイルとディレクトリ)システムレベルを提供するための操作二:sysモジュール:解釈器に関する操作三:hashlibモジュール:md 5モジュールとshaモジュールの代わりに暗号化に関する操作を提供する.主にSHA 1,SHA 224,SHA 256,SHA 384,SHA 512,MD 5アルゴリズム四:shutilモジュール:高度なファイル、フォルダ、圧縮パケット処理モジュール(再帰、ファイルコピーなど)5:configparserモジュール:特定の構成を操作するため、6:logging:ログの記録を容易にし、スレッドを安全にするためのモジュール7:time&datetimeモジュール:時間関連の操作、時間は3つの表現があります:8:randomモジュール:ランダム数9:jsonとpickleモジュール10:shelveモジュール:簡単なk、vメモリデータをファイルを通じて持続化するモジュールで、pickleがサポートできるpythonデータフォーマットを持続化することができます
osモジュール
osモジュールはオペレーティングシステムとインタラクティブなインタフェースであり、os(operator system)オペレーティングシステムは主にオペレーティングシステムのファイルシステムを操作するために使用され、一般的な方法:
|-- cpu_count # cpu
|-- getcwd # , ,
|-- curdir # ( ) , ,
|-- chdir #
|-- mkdir # , :
|-- makedirs # ,
|-- chmod #
|-- listdir # ,
|-- remove #
|-- removedirs # , ,
|-- rename #
|-- renames #
|-- rmdir # , , ,
|-- scandir # ,
|-- sep #
|-- system #
os.pathモジュールは、osのサブモジュールが主にファイルを操作するために使用され、ファイルが存在するかどうか、ファイルかフォルダかなどを判断する.
|-- abspath #
|-- basename # ,
|-- exists #
|-- getsize # ,
|-- isdir #
|-- isfile #
|-- join # :
|-- split # ,
os.getcwd() , python
os.chdir("dirname") ; shell cd
os.curdir : ('.')
os.pardir :('..')
os.makedirs('dirname1/dirname2')
os.removedirs('dirname1') , , , , ,
os.mkdir('dirname') ; shell mkdir dirname
os.rmdir('dirname') , , ; shell rmdir dirname
os.listdir('dirname') , ,
os.remove()
os.rename("oldname","newname") /
os.stat('path/filename') /
os.sep ,win "\\",Linux "/"
os.linesep ,win "\t
",Linux "
"
os.pathsep win ;,Linux :
os.name 。win->'nt'; Linux->'posix'
os.system("bash command") shell ,
os.environ
os.path.abspath(path) path
os.path.split(path) path
os.path.dirname(path) path 。 os.path.split(path)
os.path.basename(path) path 。 path / \ , 。 os.path.split(path)
os.path.exists(path) path , True; path , False
os.path.isabs(path) path , True
os.path.isfile(path) path , True。 False
os.path.isdir(path) path , True。 False
os.path.join(path1[, path2[, ...]]) ,
os.path.getatime(path) path
os.path.getmtime(path) path
Sysモジュール
Sysモジュールは、Pythonの実行時の構成およびリソースを処理するための多くの関数メソッドおよび変数を含む非常に実用的なサービスのセットを含み、従来のプログラム以外のシステム環境と対話することができる.
import sys
# List,
print(sys.argv)
# ['D:/Pycharm Community/python /sysTest.py']
# Python
print(sys.version)
# 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)]
# Int
#print(sys.maxint)
# , PYTHONPATH ( , )
print(sys.path)
#
print(sys.platform) #win32
# , exit(0)
print(sys.exit(0))
time&datetimeモジュール
3つの時間表示:Pythonでは、通常、時間を表す方法がいくつかあります.
1、 (timestamp) : , 1970 1 1 00:00:00 。 “type(time.time())”, float 。
2、
3、 (struct_time) :struct_time 9 :( , , , , , , , , )
import time
#time.sleep(5)
print(" 5s")
#sleep() # ,
#clock()
# , , unix , ' ', ( )
# windows , , ,
# ,
# ( , 1970 1 1 00:00:00 )
t = time.localtime()
print(t) # time.struct_time(tm_year=2020, tm_mon=4, tm_mday=20, tm_hour=16, tm_min=53, tm_sec=3, tm_wday=0, tm_yday=111, tm_isdst=0)
year = t.tm_year
month = t.tm_mon
print(year) #2020
# gmtime() UTC (0 ) struct_time。
# utc struc
print(time.gmtime()) # time.struct_time(tm_year=2020, tm_mon=4, tm_mday=20, tm_hour=8, tm_min=53, tm_sec=3, tm_wday=0, tm_yday=111, tm_isdst=0)
#-------
print(time.gmtime(time.time()-9000))
# time.struct_time(tm_year=2020, tm_mon=4, tm_mday=20, tm_hour=6, tm_min=23, tm_sec=3, tm_wday=0, tm_yday=111, tm_isdst=0)
# ----- Fomart
print(time.mktime(time.localtime())) # 1587372783.0
# --
print(time.strftime("%Y-%m-%d %X",time.localtime())) # 2020-04-20 16:53:03
randomモジュール
import random
randomモジュール:
|-- random() # [0,1) , !
|-- randint(m, n) # [m,n]
|-- choice() #
|-- randrange() # random.randrange(x) [0,x)
#0,1 float
print(random.random())
# 1,2,3
print(random.randint(1, 3))
# ,range
print(random.randrange(1, 3))
#
print(random.choice([1, '23', [4, 5]]))
#
print(random.sample([1, '23', [4, 5]], 2))
mathモジュール
このモジュールには多くのプログラミング言語が存在し,一般的にこのモジュールは数学演算を操作するために用いられる.
|-- ceil # ,
|-- floor # ,
|-- e #
|-- pi #
|-- fabs #
|-- fmod # ( ) fmod(x, y, /) x % y
|-- pow #
|-- sqrt #
モジュールの定義
例えばabc.pyのファイルはabcという名前のモジュールで、xyzです.pyのファイルはxyzという名前のモジュールです.次に、abcとxyzの2つのモジュール名が他のモジュールと競合していると仮定し、パッケージを通じてモジュールを組織し、競合を回避することができます.mycompanyなどの最上位パッケージ名を選択し、次のディレクトリに保存します.
mycompany
├─ __init__.py
├─ abc.py
└─ xyz.py
パッケージを導入した後、最上位レベルのパッケージ名が他の人と衝突しない限り、すべてのモジュールは他の人と衝突しません.今、abc.pyモジュールの名前はmycompanyになりました.abc、似たようなxyz.pyのモジュール名がmycompanyになりました.xyz .
各パッケージディレクトリの下に__が1つあることに注意してください.init__.pyのファイル、このファイルは存在しなければなりません.そうしないと、Pythonはこのディレクトリをパッケージではなく普通のディレクトリと見なします.init.pyは空のファイルでもPythonコードでもいいです.init__.py自体がモジュールであり、そのモジュール名はmycompanyである.同様に、マルチレベルディレクトリがあり、マルチレベル階層のパケット構造を構成することができます.たとえば、次のディレクトリ構造があります.
mycompany
├─ web
│ ├─ __init__.py
│ ├─ utils.py
│ └─ www.py
├─ __init__.py
├─ abc.py
└─ xyz.py
ファイルwww.pyのモジュール名はmycompany.web.2つのファイルpyのモジュール名はそれぞれmycompany.それはあなたとweb.utils .
自分でモジュールを作成するときは名前に注意し、Pythonが持っているモジュール名と競合してはいけません.例えば、システムにsysモジュールが付属すると、自分のモジュールはsysと命名できない.py、そうでないとシステムに付属するsysモジュールをインポートできません.
import math
def Dis_Eucl(x1,x2):#
x1=list(x1)
x2=list(x2)
tempsum=0
for i in range(len(x1)):
tempsum=tempsum+(x2[i]-x1[i])*(x2[i]-x1[i])
tempdis=math.sqrt(tempsum)
return tempdis
def Dis_Manh(x1,x2):#
x1=list(x1)
x2=list(x2)
tempsum=0
for i in range(len(x1)):
tempsum=tempsum+abs(x2[i]-x1[i])
return tempsum
def Dis_Cheb(x1,x2):#
x1=list(x1)
x2=list(x2)
tempL=[]
for i in range(len(x1)):
tempL.append(abs(x2[i]-x1[i]))
tempdis=max(tempL)
return tempdis
import math
def Dis_Cos(x1,x2):#
x1=list(x1)
x2=list(x2)
tempsum12=0
tempsum1=0
tempsum2=0
for i in range(len(x1)):
tempsum12=tempsum12+x2[i]*x1[i]
tempsum1=tempsum1+x1[i]*x1[i]
tempsum2=tempsum2+x2[i]*x2[i]
tempdis=1-tempsum12/(math.sqrt(tempsum1)*math.sqrt(tempsum2))
return tempdis
import sys
import os
dirr='D:\\TEACH\\Graduate\\PYTHON\\SUESPRG\\PackSample'
sys.path.append(dirr)
def dataLoad():
Points = [[64, -34], [-25, 12], [22, 11], [90,-12],[24, 34], [25, 32], [34, 43], [45,0]]
return Points
if __name__=='__main__':
Points=dataLoad()
def CalDis(Points):
m=len(Points)
DisMat=[]
for i in range(m):
temp1=Points[i]
Rowi=[]
for j in range(m):
temp2=Points[j]
tempdis=round(DisFun.Dis_Manh(temp1,temp2),4)
Rowi.append(tempdis)
DisMat.append(Rowi)
return DisMat
def SaveR(dirr,filename,StrR):
os.chdir(dirr)
if not os.path.exists(dirr+'\\Result\\'):
os.mkdir('Result')
Resultname=dirr+'\\Result\\'+filename
with open(Resultname,'w') as fw:
fw.write(StrR)
return 'OK'