简体   繁体   中英

Check if a file is still open in python

On a Windows OS, I use a python script that open an image in paint, using:

os.system("start %s" % path)

User suppose to edit the image, save the changes and close the file.

I wish the program will wait in a loop till the file is close, and then continue to run.

I tried:

time.sleep(5)
while True:
    try:
        myfile = open(path, "r+")
    except IOError:
        continue
    break
myfile.close()

It seems to break the loop also if I don't close the file. time.sleep(5) is to make sure the file got open successfully, and we don't have some timing issues.

Instead of myfile = open(path, "r+") I tried to use os.rename() , as someone advised here , but it does the opposite - stay in the loop even after I close the file.

It seems duplicate from here , but the solution there fits only for Excel files and I couldn't find an answer that fulfill my wish.

Thanks!

Maybe you would prefer to use the context manager version:

with open(file_path, 'r') as f:
    # do something with f
# f is closed now

This is closing the file automatically for you.

Edit: It seems the OP wants to launch Windows paint with an image that has been (somehow) detected to need some user editing. An alternative to achieve this would be: while looping through the images make a simple call to:

path_to_image = <image_file_path_here>
os.system(f'mspaint {path_to_image }')

this will open Paint with the desired image and the program will only continue execution once the Paint window is closed.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM