os裏常用的幾個

import os, sys

file = os.open("xixx.txt", os.O_RDWR | os.O_CREAT)
print(file)
print(type(file))   # int
os.write(file, 'hello world!!!')
os.close(file)
print('successfully closed!')


file = os.open("xixx.txt", os.O_RDWR)
ret = os.read(file, 18)   # 表示讀取的字節數,返回的字符串
print(type(ret))
print(ret)


# 打開文件
path = "."  # or "./"
dirs = os.listdir(path)   # 輸出所有文件和文件夾, 注意子目錄並沒有輸出,返回的是文件或者是文件名的列表
print("dirs", dirs)
print("type(dirs),", type(dirs))

# 返回當前的工作目錄
print("當前的工作目錄是:%s" % os.getcwd())   # 就是"."的內容


# 重命名 os.rename(src, dst)
# 比如把當前目錄的"xixi.txt" 改成"haha.txt"


# os.rename("haha.txt", "xixi.txt")


# 注意,這裏的"haha.txt"因爲是在當前的工作目錄,但是如果想要重命名的不是在當前目錄的話,
# 那麼參數src和dst最好是絕對路徑,爲了麻煩,可以用
# src = os.path.join(path, oldname), dst = os.path.join(path, oldname)
# 這裏的path是要重命名的那個文件所在的目錄。


# path2 = '..'
# os.rename(os.path.join(path2, "zhuan.txt"), os.path.join(path2, "qian.txt"))
# print("success")


"""注:使用上面的os.listdir()和os.rename(src, dst)可以實現給一個文件夾中的文件批量重命名,
比如把一個裏面的全部是.jpg結尾的改成.png結尾的
"""

# os.walk()
# hh = os.walk(".", topdown=True)  # 這時候hh是個生成器, 注意不是元組
# for root, dirs, files in hh:
#     print(root, dirs, files)
#     for ev in dirs:   # 當前目錄中所有的子目錄
#         print(os.path.join(root, ev))
#     print("111111111111111")
#     for ev in files:
#         print(os.path.join(root, ev))

"""通過多建立幾個文件和文件夾就可以發現,當是True的時候它的運行模式是這樣的:
.
├── __init__.py
├── dealLabel.py
├── demo.py
├── fileinput_usage.py
├── foo.txt
├── get_url.py
├── hanyi.py
├── learn_xlwings.py
├── newstat_scores_1.py
├── newstat_scores_2.py
├── os.walk_usage.py
├── os_usage.py
├── plot_roc.py
├── ren.py
├── roc_1.py
├── roc_2.py
├── shutil_usage.py
├── tagresults.py
├── teacher
│   └── student
├── xiaozhang
│   └── nv
├── xix.txt
├── xixi.txt
└── xixx.txt

這是我的運行的目錄。
運行時,第一輪  ('.', ['xiaozhang', 'teacher'], files)   # 太長了
第二輪是 ('./xiaozhang', ['nv'], [])
        ('./xiaozhang/nv', [], [])
然後是   ('./teacher', ['student'], [])
        ('./teacher/student', [], [])
所以可以看出來,它的走法是從樹根一級一級地往上,直到把一個叉走完時,纔會回來走另一個叉。
每深一級,root就改變。
"""


hh = os.walk(".", topdown=False)  # 這時候hh是個生成器, 注意不是元組
for root, dirs, files in hh:
    print(root, dirs, files)
    # for ev in dirs:   # 當前目錄中所有的子目錄
    #     print(os.path.join(root, ev))
    # print("111111111111111")
    # for ev in files:
    #     print(os.path.join(root, ev))
    #
# 這次打出來的是
# ('./xiaozhang/nv', [], [])
# ('./xiaozhang', ['nv'], [])
# ('./teacher/student', [], [])
# ('./teacher', ['student'], [])
# ('.', ['xiaozhang', 'teacher'], ['learn_xlwings.py', 'newstat_scores_1.py', 'plot_roc.py', 'dealLabel.py', 'hanyi.py', 'roc_2.py', 'ren.py', 'shutil_usage.py', 'os.walk_usage.py', '__init__.py', 'os_usage.py', 'xixi.txt', 'foo.txt', 'tagresults.py', 'xix.txt', 'xixx.txt', 'roc_1.py', 'get_url.py', 'fileinput_usage.py', 'demo.py', 'newstat_scores_2.py'])

"""topdown=False是從樹梢開始的,也是一個叉一個叉的往下,直至最根。"""
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章