検索
ホームページバックエンド開発Python チュートリアルPythonのファイル処理メソッド、osモジュール、globモジュールの使い方

    #1. 基本的なファイル操作

    1. open() ファイルを開く

    open() メソッドファイルを開いて File オブジェクトを返すために使用されます。この関数はファイルの処理中に使用する必要があります。ファイルを開けない場合は、OSError がスローされます。

    注: open() メソッドを使用する場合は、ファイル オブジェクトが閉じていること、つまり close() メソッドが呼び出されていることを確認する必要があります。

    open() 関数の一般的な形式は、ファイル名 (file) とモード (mode) の 2 つのパラメーターを受け取ることです。

    open(file, mode='r')

    完全な構文形式は次のとおりです:

    open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

    2. read() はファイルを読み取ります

    f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='r')# read模式打开文件
    data = f.read() # 读取文件内容,向操作系统发起读请求,会被操作系统转成具体的硬盘操作,将内容由硬盘读入内存
    print(data)
    # 由于Python的垃圾回收机制只回收引用计数为0的变量,但是打开文件还占用操作系统的资源,所以我们需要回收操作系统的资源资源
    # del f 只是回收变量f
    f.close()

    3. write() はファイルを書き込みます:

    # write模式打开文件
    f = open(r'/Users/mac/desktop/jupyter/pythonCourseware/32.txt', mode='w')
    f.write("""name = 'nick'
    pwd = '123'""")
    f.close()

    4、with open() メソッド

    with open() メソッドは、オペレーティング システムによって占有されているリソースを自動的に解放するメソッドを提供するだけでなく、with open をカンマで区切って複数のファイルを開くこともできます。ファイルの高速コピーを実現するには 1 回です。

    with open('32.txt', 'rt', encoding='utf8') as f:
        print(f.read())
    
    with open('32.txt', 'rb') as fr, \
            open('35r.txt', 'wb') as fw:
        f.write(f.read())

    2. ファイルを開くモード

    ファイル操作には 4 つの基本モードがあります

    • r モード: (デフォルト) 読み取り専用モード、のみ読み取りはできますが、書き込みはできません。ファイル ポインタはファイルの先頭に配置されます。ファイルが存在しない場合は、エラーが報告されます。

    • w モード: 上書きモード ファイルが存在しない場合は、最初から作成して編集します。つまり、元の内容は削除されます。完全に上書きされます。

    • a モード: 追加書き込みモード: ファイルが存在しない場合は作成され、存在する場合はファイルの末尾に内容が追加されます。たとえば、新しいコンテンツは既存のコンテンツの後に書き込まれます。

    ファイルのコンテンツの読み取りと書き込みには 2 つの形式があります。

    • t モードはテキスト (デフォルト): テキスト モード

    • b モードはバイト: バイト モードです。

    2 つのモード t と b は単独で使用できず、r/w/a のいずれかと組み合わせて使用​​する必要があることに注意してください。

    1. ファイルを開くモード

    1. テキストの読み取り
    # rt: read by text
    # windows的操作系统默认编码为gbk,因此需要使用utf8编码
    f = open('32.txt', mode='rt', encoding='utf8')
    data = f.read()
    print(data) # nick最帅吗
    print(type(data)} # <class &#39;str&#39;>
    f.close()
    2. バイトの読み取り
    # rb: read by bytes
    f = open(&#39;32.txt&#39;, mode=&#39;rb&#39;)
    data = f.read()
    print(data) # b&#39;aaa\nbbb\nccc\nnick\xe6\x9c\x80\xe5\xb8\x85\xe5\x90\x97&#39;
    print(type(data)) # <class &#39;bytes&#39;>
    f.close()
    3. 1行ずつ読むため、非常にオンです読み込まれた行。
    fname = input("请输入要打开的文件名称:")
    fo = open(fname, "r")
    print(type(fo))  # <class &#39;_io.TextIOWrapper&#39;>
    for line in fo:
        print(line)
    fo.close()
    4. 読み取り方法:
    • read(size): ファイルの内容を一度に読み取り、パラメータが指定されている場合は、前のサイズの長さを読み取ります。 。

    • readline(size): 改行文字「\n」を含むコンテンツ行を読み取ります。指定した場合は、行を読み取る前に長さのサイズを指定します。次回は、前回中断したところから続きを読むことができます。 f.readline() が空の文字列を返した場合、最後の行が読み取られたことを意味します。

    • readlines([sizeint]): すべての行を読み取り、リストを返します。sizeint>0 が指定された場合、合計がおよそ sizeint バイトになる行を返します。実際の読み取り値は次のとおりです。 sizeint より大きい場合は、バッファーを埋める必要があるため大きくなります。

    • f = open(&#39;32.txt&#39;, mode=&#39;rt&#39;, encoding=&#39;utf8&#39;)
      print(f.readable())  #True 判断文件是否可读
      data1 = f.readline()
      data2 = f.readlines()
      print(data1) # aaa
      print(data2) # [&#39;bbb\n&#39;, &#39;ccc\n&#39;, &#39;nick最帅吗&#39;]
      f.close()
    2. ファイルのオープン モード

    は書き込みのみ可能であり、読み取りはできません。ファイルが存在する場合は、ファイルをクリアしてから内容を書き込みます。存在しません ファイルが作成され、内容が書き込まれます。

    1. テキスト モード
    f = open(&#39;34w.txt&#39;, mode=&#39;wt&#39;, encoding=&#39;utf8&#39;)
    print(f"f.readable(): {f.readable()}") #False
    f.write(&#39;nick 真帅呀\n&#39;)  # &#39;\n&#39;是换行符
    f.write(&#39;nick,nick, you drop, I drop.&#39;)
    f.write(&#39;nick 帅的我五体投地&#39;)
    f.flush()  # 立刻将文件内容从内存刷到硬盘
    f.close()
    2. バイト モード
    f = open(&#39;34a.txt&#39;, mode=&#39;wb&#39;)
    f.write(&#39;nick 帅的我五体投地&#39;.encode(&#39;unicode_escape&#39;) )  # 编码成bytes类型再写入
    print(type(&#39;nick 帅的我五体投地&#39;.encode(&#39;unicode_escape&#39;))) #<class &#39;bytes&#39;>
    f.close()
    注: b モードはユニバーサル モードで、ハードディスク上のすべてのファイルはバイナリ形式で保存されます。形状。

    b モードでファイルを読み書きする場合、バイナリは再エンコードできないため、エンコード パラメータを追加しないでください。

    try:
        import requests
    
        response = requests.get( &#39;https://cache.yisu.com/upload/information/20220528/112/3002.jpg&#39;)
        data = response.content
    
        f = open(&#39;mv.jpg&#39;, &#39;wb&#39;)
        f.write(data)
        print(&#39;done...&#39;)
        f.close()
    except Exception as e:
        print(e, &#39;报错了,那就算了吧,以后爬虫处会详细介绍&#39;)

    3. 書き込みメソッド:
    • write(s): 文字列をファイルに書き込み、書き込まれた文字の長さを返します。

    • writelines(lines): 複数行の文字列リストをファイルに書き込みます。改行が必要な場合は、各行に改行文字を自分で追加する必要があります。

    • flush(): ファイルの内部バッファを更新し、出力バッファに書き込まれるのを受動的に待つのではなく、内部バッファ内のデータを直ちにファイルに直接書き込みます。

    3. オープニング モードをファイルする

    a: 追加できます。ファイルが存在する場合、内容はファイルの最後に書き込まれ、ファイルが存在しない場合、ファイルが作成されて内容が書き込まれます。

    # at
    f = open(&#39;34a.txt&#39;, mode=&#39;at&#39;, encoding=&#39;utf8&#39;)
    print(f.readable()) # False
    f.write(&#39;nick 真帅呀\n&#39;)  # &#39;\n&#39;是换行符
    f.write(&#39;nick,nick, you drop, I drop.&#39;)
    f.write(&#39;nick 帅的我五体投地&#39;)
    f.close()

    4. 読み取りおよび書き込み可能

    • r: 読み取りおよび書き込み可能。ファイル ポインタはファイルの先頭に配置されます。

    • rb: 読み取りおよび書き込み可能なバイナリ形式

    • w: 書き込みおよび読み取り可能。ファイルがすでに存在する場合は、ファイルを開いて最初から編集を開始します。つまり、元のコンテンツは削除されます。ファイルが存在しない場合は、新しいファイルを作成します。

    • wb: 書き込み可能、​​読み取り可能なバイナリ形式

    • a: 追加可能、読み取り可能。ファイルがすでに存在する場合、ファイル ポインタはファイルの末尾に配置されます。ファイルは追加モードで開かれます。ファイルが存在しない場合は、読み取りおよび書き込み用に新しいファイルが作成されます。

    • ab: 追加可能で読み取り可能なバイナリ形式

    • # r+t
      with open(&#39;32.txt&#39;, &#39;r+&#39;, encoding=&#39;utf-8&#39;) as fr:
          print(fr.readable())  # True
          print(fr.writable())  # True
    3. ファイル ポインタの操作

    ファイル ポインタに関係するものすべてバイト。

    1. seen(offset, from_what): 現在のファイル操作ポインタの位置を変更します。

    from_what の値は、0 の場合は開始を意味し、1 の場合は開始を意味します。は現在位置を意味し、2 はファイルの終わりを意味します。例:

    • seek(x,0): 開始位置から x 文字を移動します。ファイルの最初の行の最初の文字

    • seek (x,1): 現在の位置から x 文字戻すことを意味します

    • seek(-x,2):表示从文件的结尾往前移动x个字符

    from_what 值为默认为0,即文件开头。

    f.seek(0) # 回到文件开头

    下面给出一个完整的例子:

    f = open(&#39;32.txt&#39;, &#39;rb+&#39;)
    print(f.write(b&#39;0123456789abcdef&#39;)) # 16
    print(f.seek(5))  # 移动到文件的第六个字节 # 5
    print(f.read(1))  # b&#39;5&#39;
    print(f.seek(-3, 2))  # 移动到文件的倒数第三字节 # 13
    print(f.read(1)) # b&#39;d&#39;

    2、tell():告诉文件当前位置。

    每次统计都是从文件开头到当前指针所在位置

    with open(&#39;32.txt&#39;, &#39;rb&#39;) as fr:
        fr.seek(4, 0)
        print(fr.tell() )  # 4

    3、truncate([size]):截断

    从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;

    截断之后后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字符大小。

    文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate()要在r+或a或a+等模式下测试效果。它的参照物永远是文件头。

    truncate()不加参数,相当于清空文件。

    with open(&#39;32.txt&#39;, &#39;ab&#39;) as fr:
        fr.truncate(2)  # 截断2个字节后的所有字符,如果3个字节一个字符,只能截断2/3个字符,还会遗留1/3个字符,会造成乱码

    四、文件修改的两种方式

    以读的方式打开原文件,以写的方式打开一个新的文件,把原文件的内容进行修改(一行一行的修改或者全部修改),然后写入新文件,之后利用os模块的方法,把原文件删除,重命名新文件为原文件名,达到以假乱真的目的。

    方式1、将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)。

    import os
    
    with open(&#39;37r.txt&#39;) as fr, open(&#39;37r_swap.txt&#39;, &#39;w&#39;) as fw:
        data = fr.read()  # 全部读入内存,如果文件很大,会很卡
        data = data.replace(&#39;tank&#39;, &#39;tankSB&#39;)  # 在内存中完成修改
    
        fw.write(data)  # 新文件一次性写入原文件内容
    
    # 删除原文件
    os.remove(&#39;37r.txt&#39;)
    # 重命名新文件名为原文件名
    os.rename(&#39;37r_swap.txt&#39;, &#39;37r.txt&#39;)

    方式2、将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件。

    import os
    
    with open(&#39;37r.txt&#39;) as fr, open(&#39;37r_swap.txt&#39;, &#39;w&#39;) as fw:
         for line in fr: # 循环读取文件内容,逐行修改
            line = line.replace(&#39;jason&#39;, &#39;jasonSB&#39;)
            fw.write(line)  # 新文件写入原文件修改后内容
    
    os.remove(&#39;37r.txt&#39;)
    os.rename(&#39;37r_swap.txt&#39;, &#39;37r.txt&#39;)

    五、os文件处理模块

    os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口,多用于文件处理。

    import os

    1、os模块

    • os.getcwd():获取当前工作目录,即当前python脚本工作的目录路径

    • os.chdir("dirname"):改变当前工作目录;相当于shell下cd

    • os.curdir:返回当前目录: ('.')

    • os.pardir:获取当前目录的父目录字符串名:('..')

    • os.listdir('dirname'):列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

    • os.chmod(path, mode):更改权限

    • os.mkdir('dirname'):生成单级目录;相当于shell中mkdir dirname

    • os.makedirs('dirname1/dirname2'):可生成多层递归目录

    • os.remove(path):删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。

    • os.removedirs('dirname1'):若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推

    • os.rmdir('dirname'):删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname

    • os.rename("oldname","newname"):重命名文件/目录

    • os.renames(old, new):递归地对目录进行更名,也可以对文件进行更名。

    • os.stat('path/filename'):获取文件/目录信息

    • os.sep:输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"

    • os.linesep:输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"

    • os.pathsep:输出用于分割文件路径的字符串 win下为;,Linux下为:

    • os.name:输出字符串指示当前使用平台。win->'nt'; Linux->'posix'

    • os.system("bash command"):运行shell命令,直接显示

    • os.environ:获取系统环境变量

    2、os.path 模块

    主要用于获取文件的属性。

    以下是 os.path 模块的几种常用方法:

    • os.path.abspath(path):返回path规范化的绝对路径

    • os.path.split(path):将path分割成目录和文件名二元组返回

    • os.path.splitdrive(path):一般用在 windows 下,返回驱动器名和路径组成的

    • os.path.splitext(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(path2[, path3[, ...]]):将多个路径组合后返回,第一个绝对路径之前的参数将被忽略

    • os.path.getatime(path):返回path所指向的文件或者目录的最后存取时间

    • os.path.getmtime(path):返回path所指向的文件或者目录的最后修改时间

    • os.path.getsize(path): 返回文件大小,如果文件不存在就返回错误

    3、实例:

    1、获取指定目录及其子目录下的 py 文件

    import os
    import os.path
    
    """获取指定目录及其子目录下的 py 文件路径说明:l 用于存储找到的 py 文件路径 get_py 函数,递归查找并存储 py 文件路径于 l"""
    l = []
    
    
    def get_py(path, l):
        file_list = os.listdir(path)  # 获取path目录下所有文件
        for filename in file_list:
            path_tmp = os.path.join(path, filename)  # 获取path与filename组合后的路径
            if os.path.isdir(path_tmp):  # 如果是目录
                get_py(path_tmp, l)  # 则递归查找
            elif filename[-3:].upper() == &#39;.PY&#39;:  # 不是目录,则比较后缀名
                l.append(path_tmp)
    
    
    path = input(&#39;请输入路径:&#39;).strip()
    get_py(path, l)
    print(&#39;在%s目录及其子目录下找到%d个py文件\n分别为:\n&#39; % (path, len(l)))
    for filepath in l:
        print(filepath + &#39;\n&#39;)

    2、显示所有视频格式文件,mp4,avi,rmvb

    import os
    
    vedio_list = []
    
    def search_file(start_dir, target) :
        os.chdir(start_dir)
        
        for each_file in os.listdir(os.curdir) :
            ext = os.path.splitext(each_file)[1]
            if ext in target :
                vedio_list.append(os.getcwd() + os.sep + each_file + os.linesep) 
            if os.path.isdir(each_file) :
                search_file(each_file, target) # 递归调用
                os.chdir(os.pardir) # 递归调用后切记返回上一层目录
    
    start_dir = input(&#39;请输入待查找的初始目录:&#39;)
    program_dir = os.getcwd()
    
    target = [&#39;.mp4&#39;, &#39;.avi&#39;, &#39;.rmvb&#39;]
    
    search_file(start_dir, target)
    
    f = open(program_dir + os.sep + &#39;vedioList.txt&#39;, &#39;w&#39;)
    f.writelines(vedio_list)
    f.close()

    3、批量修改文件名

    import os
    
    path = input(&#39;请输入文件路径(结尾加上/):&#39;)
    
    # 获取该目录下所有文件,存入列表中
    fileList = os.listdir(path)
    
    n = 0
    for i in fileList:
        # 设置旧文件名(就是路径+文件名)
        oldname = path + os.sep + fileList[n]  # os.sep添加系统分隔符
    
        # 设置新文件名
        newname1 = path + os.sep + &#39;a&#39; + str(n + 1) + &#39;.JPG&#39;
    
        os.rename(oldname, newname1)  # 用os模块中的rename方法对文件改名c:\
        print(oldname, &#39;======>&#39;, newname1)
    
        n += 1

    七、glob模块:使用通配符查找文件

    用它可以查找符合特定规则的文件路径名。跟使用windows下的文件搜索差不多。

    查找文件只用到三个匹配符:“*”, “?”, “[]”。

    • “*”:匹配0个或多个字符;

    • “?”:匹配单个字符;

    • “[]”:匹配指定范围内的字符,如:[0-9]匹配数字。

    1、glob.glob:返回所有匹配的文件路径列表。

    它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。

    输出:类型是list型,然后就是输出相关的文件路径了

    import glob
    
    file = glob.glob(r&#39;C:\工具\*\*\pan*.exe&#39;)
    print(type(file))  # <class &#39;list&#39;>
    print(file)  # [&#39;C:\\工具\\PanDownload_v2.1.3\\PanDownload\\PanDownload.exe&#39;]
    
    #获取上级目录的所有.py文件
    print (glob.glob(r&#39;../*.py&#39;)) #相对路径

    2、glob.iglob:获取一个可遍历对象,使用它可以逐个获取匹配的文件路径名。

    与glob.glob()的区别是:glob.glob同时获取所有的匹配路径,而glob.iglob一次只获取一个匹配路径。

    下面是一个简单的例子:

    import glob
    
    #父目录中的.py文件
    f = glob.iglob(r&#39;../*.py&#39;)
    print ( f ) # <generator object iglob at 0x00B9FF80>
    for py in f:
       print  (py)

    以上がPythonのファイル処理メソッド、osモジュール、globモジュールの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    Python:ゲーム、GUIなどPython:ゲーム、GUIなどApr 13, 2025 am 12:14 AM

    PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

    Python vs. C:比較されたアプリケーションとユースケースPython vs. C:比較されたアプリケーションとユースケースApr 12, 2025 am 12:01 AM

    Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

    2時間のPython計画:現実的なアプローチ2時間のPython計画:現実的なアプローチApr 11, 2025 am 12:04 AM

    2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

    Python:主要なアプリケーションの調査Python:主要なアプリケーションの調査Apr 10, 2025 am 09:41 AM

    Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

    2時間でどのくらいのPythonを学ぶことができますか?2時間でどのくらいのPythonを学ぶことができますか?Apr 09, 2025 pm 04:33 PM

    2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

    プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?プロジェクトの基本と問題駆動型の方法で10時間以内にコンピューター初心者プログラミングの基本を教える方法は?Apr 02, 2025 am 07:18 AM

    10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

    中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?中間の読書にどこでもfiddlerを使用するときにブラウザによって検出されないようにするにはどうすればよいですか?Apr 02, 2025 am 07:15 AM

    fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

    Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Python 3.6にピクルスファイルをロードするときに「__Builtin__」モジュールが見つからない場合はどうすればよいですか?Apr 02, 2025 am 07:12 AM

    Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

    AIヘンタイを無料で生成します。

    ホットツール

    MantisBT

    MantisBT

    Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

    MinGW - Minimalist GNU for Windows

    MinGW - Minimalist GNU for Windows

    このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    強力な PHP 統合開発環境

    EditPlus 中国語クラック版

    EditPlus 中国語クラック版

    サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境