You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
there doesn't seem to be a way to rename files in MemFS without copying them around. Looks like MemFS tries to apply os.rename() if the file can be seen by the OS (which is not the case for MemFS). The only remaining way is to use something like fs.move that duplicates the file before removing the old one. On systems with limited memory this obviously doesn't work. Example: a MemFS with a total size of 10 GB and a single file of 8 GB lying on it. How to rename this file?
https://docs.pyfilesystem.org/en/latest/guide.html#moving-and-copying says "These move and copy methods are optimized where possible, and depending on the implementation, they may be more performant than reading and writing files.". However it looks like MemFS doesn't have optimised move or movedir methods and instead just drops through to the base fs.move, which as you note does a copy-then-delete.
I'm not familiar enough with the MemFS to know if there's a good reason why it doesn't provide optimised move / movedir methods though (and I don't have time to look into it ATM). But feel free to experiment and put a PR together... 😉
Activity
lurch commentedon Mar 10, 2021
Hmmm, interesting point...
https://docs.pyfilesystem.org/en/latest/guide.html#moving-and-copying says "These move and copy methods are optimized where possible, and depending on the implementation, they may be more performant than reading and writing files.". However it looks like MemFS doesn't have optimised
moveormovedirmethods and instead just drops through to the basefs.move, which as you note does a copy-then-delete.I'm not familiar enough with the MemFS to know if there's a good reason why it doesn't provide optimised
move/movedirmethods though (and I don't have time to look into it ATM). But feel free to experiment and put a PR together... 😉willmcgugan commentedon Mar 11, 2021
MemFs certainly could do a rename operation rather than a copy. It just hasn’t been implemented.
althonos commentedon Mar 26, 2021
This was implemented in #472, and will be available in
v2.4.13when it's released. Cheers!