我有一個小腳本我正在處理「碎化」單個文件(零文件的字節),我試圖使它能夠根據是否通過命令行接收到-file或-directory標誌/ arg來將目錄中的每個文件都碎片化。 這對單個文件工作正常,但我得到一個:如何執行一個目錄中的所有文件或基於args的單個文件的功能,在python
IsADirectoryError: [Errno 21] 'Path/To/Directory' error when trying to use it on all files in a directory
。我已經嘗試了幾種安排循環的方法,以便它們能夠工作,但目前還沒有。我希望這裏有人能幫助我糾正這一點。
我有argparser
設置,因此-F file, -D directory, -s srcpath, -i iterations
和任何與bar有關的事情都只是我的進度條,它顯示了腳本在運行過程中有多遠。
這裏是我的代碼:
parser= argparse.ArgumentParser()
parser.add_argument('-F', '--file', action=store_true)
parser.add_argument('-D', '--directory', action=store_true)
parser.add_argument('-s', '--source', required=True, type=str)
parser.add_argument('-i', '--iterations', required=True, type=int)
args = parser.parse_args()
bar = Bar ("Progress: ", max=args.iterations)
srcpath = "path/to/file/"
def shredfile(source, filebytes):
with open(source, 'r+b') as f:
byte = f.read(1)
while byte:
f.write(filebytes)
byte = f.read(1)
zeros = ("0000000").encode('UTF-8')
if args.file:
x=0
for x in range (args.iterations):
shredfile(srcpath, zeros)
bar.next()
bar.finish()
print("Completed")
if args.directory:
for d in os.listdir(srcpath):
x=0
for x in range (args.iterations):
shredfile(srcpath, zeros)
bar.next()
bar.finish()
print("Completed")
什麼是'args'。 ['argparse.ArgumentParser().parse_args()']的返回值(https://docs.python.org/3.6/library/argparse.html#argparse.ArgumentParser)? –
「bar」在哪裏定義? – Kevin
你可以發佈你得到的_full_追蹤? –