我们从Python开源项目中,提取了以下6个代码示例,用于说明如何使用os.tmpnam()。
def test_tmpnam(self): with warnings.catch_warnings(): warnings.filterwarnings("ignore", "tmpnam", RuntimeWarning, r"test_os$") warnings.filterwarnings("ignore", "tmpnam", DeprecationWarning) name = os.tmpnam() if sys.platform in ("win32",): # The Windows tmpnam() seems useless. From the MS docs: # # The character string that tmpnam creates consists of # the path prefix, defined by the entry P_tmpdir in the # file STDIO.H, followed by a sequence consisting of the # digit characters '0' through '9'; the numerical value # of this string is in the range 1 - 65,535. Changing the # definitions of L_tmpnam or P_tmpdir in STDIO.H does not # change the operation of tmpnam. # # The really bizarre part is that, at least under MSVC6, # P_tmpdir is "\\". That is, the path returned refers to # the root of the current drive. That's a terrible place to # put temp files, and, depending on privileges, the user # may not even be able to open a file in the root directory. self.assertFalse(os.path.exists(name), "file already exists for temporary file") else: self.check_tempfile(name) # Test attributes on return values from os.*stat* family.
def test_tmpnam(self): if not hasattr(os, "tmpnam"): return with warnings.catch_warnings(): warnings.filterwarnings("ignore", "tmpnam", RuntimeWarning, r"test_os$") warnings.filterwarnings("ignore", "tmpnam", DeprecationWarning) name = os.tmpnam() if sys.platform in ("win32",): # The Windows tmpnam() seems useless. From the MS docs: # # The character string that tmpnam creates consists of # the path prefix, defined by the entry P_tmpdir in the # file STDIO.H, followed by a sequence consisting of the # digit characters '0' through '9'; the numerical value # of this string is in the range 1 - 65,535. Changing the # definitions of L_tmpnam or P_tmpdir in STDIO.H does not # change the operation of tmpnam. # # The really bizarre part is that, at least under MSVC6, # P_tmpdir is "\\". That is, the path returned refers to # the root of the current drive. That's a terrible place to # put temp files, and, depending on privileges, the user # may not even be able to open a file in the root directory. self.assertFalse(os.path.exists(name), "file already exists for temporary file") else: self.check_tempfile(name) # Test attributes on return values from os.*stat* family.
def rename(root, filelist): """rename(root, filelist) -> None Sanitize the filenames given in 'filelist', which are rooted at 'root' by using a set of regex rules. !!! NOTE: This function calls os.tmpnam() which is insecure. """ if not filelist: return def apply_rules(filename): rulez = [('_+' , ' '), # One or more underscores to spaces ('-{2,}' , '-'), # Two or more hyphens to single hyphen ('&' , 'And'), # An ampersand to 'And' ('(-)(\w*)' ,r' \1 \2')]# Spaces around hyphen seperated words for look_for, replacement in rulez: filename = re.sub(look_for, replacement, filename) # Capitalize first letter of every word filename = " ".join([ word.capitalize() for word in filename.split() ]) return filename names = [] for filename in filelist: basename = os.path.basename(filename) names.append(os.path.join(root, apply_rules(filename))) try: dest = os.tmpnam() fl = open(dest, 'w') fl.write("\n".join(names)) fl.close() os.system("%s %s" % (EDITOR, dest)) ans = 'no' for oldname, newname in zip(filelist, open(dest).readlines()): oldname = os.path.join(root, oldname) newname = newname.strip() if oldname == newname: print "No change from %s to %s ...skipping" % (oldname, newname) else: print "Changing %s to %s" % (oldname, newname) if not ans[0].lower == 'a': ans = raw_input("Contine (Yes/No/All) ? [N] ") or 'no' if ans[0].lower() in ('a', 'y'): os.rename(oldname, newname) else: os.rename(oldname, newname) finally: os.remove(dest)
def restore(database_name, data): from trytond.tools import exec_command_pipe database = Database().connect() cursor = database.cursor(autocommit=True) database.create(cursor, database_name) cursor.commit() cursor.close() database.close() cmd = ['pg_restore', '--no-owner'] env = {} uri = parse_uri(config.get('database', 'uri')) if uri.username: cmd.append('--username=' + uri.username) if uri.hostname: cmd.append('--host=' + uri.hostname) if uri.port: cmd.append('--port=' + str(uri.port)) if uri.password: env['PGPASSWORD'] = uri.password cmd.append('--dbname=' + database_name) args2 = tuple(cmd) if os.name == "nt": tmpfile = (os.environ['TMP'] or 'C:\\') + os.tmpnam() with open(tmpfile, 'wb') as fp: fp.write(data) args2 = list(args2) args2.append(' ' + tmpfile) args2 = tuple(args2) pipe = exec_command_pipe(*args2, env=env) if not os.name == "nt": pipe.stdin.write(data) pipe.stdin.close() res = pipe.wait() if res: raise Exception('Couldn\'t restore database') database = Database(database_name).connect() cursor = database.cursor() if not cursor.test(): cursor.close() database.close() raise Exception('Couldn\'t restore database!') cursor.close() database.close() Database._list_cache = None return True