Как подать файл на вход программе

Извините за глупый вопрос, но как подать файл на вход программы? Попробовал разные способы, но все равно не видит файл.

import array import sys import struct import os SECTOR_SIZE = 512 def sizemb(num, suffix=’B’): for unit in [», ‘Ki’, ‘Mi’, ‘Gi’, ‘Ti’, ‘Pi’, ‘Ei’, ‘Zi’]: if abs(num) < 1024.0: return «%3.1f%s%s» % (num, unit, suffix) num /= 1024.0 return «%.1f%s%s» % (num, ‘Yi’, suffix) class VmdkParser: def __init__(self, i, filesize): self.i = i self.errors = [] self.filesize = filesize self.blocks = [None] * int(filesize / SECTOR_SIZE) def d(self, msg, offset=-1): if offset == -1: offset = self.i.tell() print(«[%12d] %s» % (offset, msg)) def e(self, msg, offset=-1): if offset == -1: offset = self.i.tell() msg = «[%12d] ERROR %s» % (offset, msg) self.errors.append(msg) print(msg) def parse_magic(self): self.magic = self.i.read(4) if self.magic == b»COWD»: self.d(«Version 3 header found») self.version = 3 elif self.magic == b»KDMV»: self.d(«Version 4 header found») self.version = 4 else: self.d(«Invalid magic string %s» % self.magic) raise Exception(«Could not determine file type») def parse_v3_header(self): hdr = struct.unpack(«self.capacity: self.e(«gte %d out of bounds» % gte, gteo) for i in range(0, self.granularity): self.reserve_block(gte + i, gd, ctr) ctr += 1 def reserve_block(self, idx, gd, gt): # print(«Reserving %d for %d,%d» %(idx, gd,gt)) if self.blocks[idx] != None: self.e(«Block %d already reserved by %d,%d» % (idx, self.blocks[idx][0], self.blocks[idx][1])) else: self.blocks[idx] = [gd, gt] def check_blocks(self): self.used_blocks = 0 for idx, b in enumerate(self.blocks): if b == None: # self.d(«Free block %d» % idx, idx * SECTOR_SIZE) pass else: self.used_blocks += 1 expect_used = self.gtes + self.gts * 4 + 2 if self.used_blocks != expect_used: self.e(«Expected %d blocks used, found %d» % (expect_used, self.used_blocks)) if self.used_sectors != None and self.used_sectors != expect_used: self.e(«Expected %d blocks used, found %d in v3 header» % (expect_used, self.used_sectors)) def parse_header(self): if self.version == 4: self.parse_v4_header() elif self.version == 3: self.parse_v3_header() else: raise Exception(«No header found») def parse(self): self.parse_magic() self.parse_header() self.print_header() self.parse_gd() self.check_blocks() filesize_estimation = self.gtes * SECTOR_SIZE * self.granularity self.d(«Parsing complete: %d grains (%s), %d gts, filesize %s, %d used_blocks, %d errors» % ( self.gtes, sizemb(filesize_estimation), self.gts, sizemb(self.filesize), self.used_blocks, len(self.errors))) def main(filename): inputfile = None try: fsize = os.stat(filename).st_size inputfile = open(filename, ‘rb’) except: print(«Can’t open file») sys.exit(1) p = VmdkParser(inputfile, fsize) try: p.parse() except Exception as e: print(e.message) if (len(sys.argv) < 2): print(«Please give me a nice vmdk file!») sys.exit(1) main(sys.argv[1])

Читайте также:
Какие есть лицензионные программы для компьютера

Отслеживать

Как подать документы в налоговую с помощью ЭЦП (ООО или ИП) | Разбираем тонкости и нюансы подачи

Linux для Начинающих — Перенаправление вывода / ввода — /dev/null

24k 4 4 золотых знака 19 19 серебряных знаков 35 35 бронзовых знаков

Источник: ru.stackoverflow.com

Дать на вход программе файл через аргументы командной строки — C (СИ)

Как реализовать в Visual Studio две вещи 1)Дать на вход программе файл через аргументы командной строки. 2)Написать что-то в выходной файл, то есть в файл трассировки? Знаю, как читать символы с обычного файла, который создается в проекте. А вот как работать с командной строкой, не нашел.

Код к задаче: «Дать на вход программе файл через аргументы командной строки»

Листинг программы

int main(int argc, char* argv[]) < // do something with argc >// argc —> количество аргументов, переданных программе из CMD // argv[] —> массив указателей, в котором будут содержаться аргументы, переданные из CMD

Источник: studassistent.ru

Как подать файл на вход программе

С каждым открытым файлом связан дескриптор файла. [1] Дескрипторы файлов stdin, stdout и stderr — 0, 1 и 2, соответственно. При открытии дополнительных файлов, дескрипторы с 3 по 9 остаются незанятыми. Иногда дополнительные дескрипторы могут сослужить неплохую службу, временно сохраняя в себе ссылку на stdin, stdout или stderr. [2] Это упрощает возврат дескрипторов в нормальное состояние после сложных манипуляций с перенаправлением и перестановками (см. Пример 16-1).

COMMAND_OUTPUT > # Перенаправление stdout (вывода) в файл. # Если файл отсутствовал, то он создется, иначе — перезаписывается. ls -lR > dir-tree.list # Создает файл, содержащий список дерева каталогов. : > filename # Операция > усекает файл «filename» до нулевой длины. # Если до выполнения операции файла не существовало, # то создается новый файл с нулевой длиной (тот же эффект дает команда ‘touch’). # Символ : выступает здесь в роли местозаполнителя, не выводя ничего. > filename # Операция > усекает файл «filename» до нулевой длины. # Если до выполнения операции файла не существовало, # то создается новый файл с нулевой длиной (тот же эффект дает команда ‘touch’). # (тот же результат, что и выше — «: >», но этот вариант неработоспособен # в некоторых командных оболочках.) COMMAND_OUTPUT >> # Перенаправление stdout (вывода) в файл. # Создает новый файл, если он отсутствовал, иначе — дописывает в конец файла. # Однострочные команды перенаправления # (затрагивают только ту строку, в которой они встречаются): # ——————————————————————— 1>filename # Перенаправление вывода (stdout) в файл «filename». 1>>filename # Перенаправление вывода (stdout) в файл «filename», файл открывается в режиме добавления.

Читайте также:
Программа с помощью которой создан файл текстовый редактор

2>filename # Перенаправление stderr в файл «filename». 2>>filename # Перенаправление stderr в файл «filename», файл открывается в режиме добавления. filename # Перенаправление stdout и stderr в файл «filename». #============================================================================== # Перенаправление stdout, только для одной строки.

LOGFILE=script.log echo «Эта строка будет записана в файл «$LOGFILE».» 1>$LOGFILE echo «Эта строка будет добавлена в конец файла «$LOGFILE».» 1>>$LOGFILE echo «Эта строка тоже будет добавлена в конец файла «$LOGFILE».» 1>>$LOGFILE echo «Эта строка будет выведена на экран и не попадет в файл «$LOGFILE».» # После каждой строки, сделанное перенаправление автоматически «сбрасывается». # Перенаправление stderr, только для одной строки. ERRORFILE=script.errors bad_command1 2>$ERRORFILE # Сообщение об ошибке запишется в $ERRORFILE. bad_command2 2>>$ERRORFILE # Сообщение об ошибке добавится в конец $ERRORFILE. bad_command3 # Сообщение об ошибке будет выведено на stderr, #+ и не попадет в $ERRORFILE. # После каждой строки, сделанное перенаправление также автоматически «сбрасывается». #============================================================================== 2> FILENAME < FILENAME # Ввод из файла. # Парная команде filename # Файл «filename» открывается на чтение и запись, и связывается с дескриптором «j». # Если «filename» отсутствует, то он создается. # Если дескриптор «j» не указан, то, по-умолчанию, бередся дескриптор 0, stdin. # # Как одно из применений этого — запись в конкретную позицию в файле. echo 1234567890 > File # Записать строку в файл «File». exec 3<> File # Открыть «File» и связать с дескриптором 3. read -n 4 1234.67890 # Произвольный доступ, да и только! | # Конвейер (канал). # Универсальное средство для объединения команд в одну цепочку. # Похоже на result-file # Содержимое всех файлов .txt сортируется, удаляются повторяющиеся строки, # результат сохраняется в файле «result-file».

Операции перенаправления и/или конвейеры могут комбинироваться в одной командной строке.

command < input-file >output-file command1 | command2 | command3 > output-file

Читайте также:
Программа чтобы сделать живые обои на ПК

Допускается перенаправление нескольких потоков в один файл.

ls -yz >> command.log 2>yz» в команде «ls» будет записано в файл «command.log». # Поскольку stderr перенаправлен в файл.

Закрытие дескрипторов файлов

Закрыть дескриптор входного файла n.

Источник: www.opennet.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru